web-dev-qa-db-ja.com

関数パラメーターで待機を使用する

パラメータでawaitを使用することは可能ですか?例えば:

const run = async () => {
  getStudentDetails(await getStudentId());
}

たとえそうだとしても、それは最善の考えではないように思われます。誰かが前にこれをしましたか?

7
Justin

私はいつもそれをします。ただし、関数に複数のパラメーターを渡したい場合は、それらは順番に解決されます。その問題と戦うために、私は次のようなutil関数を作成しました。

async function call(func, ...args) {
    return func(...await Promise.all(args));
}

(async function() {
        console.log(await call(functionToCall, delay(2000), delay(2000)));
})();

その構文では、functionToCallは4秒ではなく2秒で呼び出されます

0
Kirill Reznikov

はい、これは機能します。式を使用できるすべての場所でawaitキーワードを使用できるためです。

ただし、読みやすさを向上させるために(また、デバッグ性を向上させるためにも)、コードを少し更新したバージョンをお勧めします。

const run = async () => {
  const studentId = await getStudentId();

  getStudentDetails(studentId);
}

これがお役に立てば幸いです????

0
Golo Roden