非同期関数では、次のような非同期値を取得できます。
const foo = await myAsyncFunction()
結果に対してメソッドを呼び出したい場合は、sync関数を使用してmyAsyncFunction().somethingElse()
のようなものを実行します
非同期関数で呼び出しをチェーンすることは可能ですか、または各結果に新しい変数を割り当てる必要がありますか?
式で待つことができ、新しい変数に割り当てる必要はありません。
const foo = await (await myAsyncFunction()).somethingElseAsync()
または、結果に対して同期メソッドを呼び出したい場合:
const foo = (await myAsyncFunction()).somethingElseSync()
この回答await
式を括弧で囲んだTamas HegedusによるバニラJavaScriptの使い方は間違いありません。
あるいは、一般的にチェーン化されたJSメソッドを探していて、サードパーティのモジュールを気にしない場合は、npmで async-af を使用できます。これにより、非同期メソッドを次のようにチェーンできます。
const promises = [1, 2, 3].map(n => Promise.resolve(n));
AsyncAF(promises).map(n => n * 2).filter(n => n !== 4).forEach(n => console.log(n));
// logs 2 then 6
<script src="https://unpkg.com/[email protected]/index.js"></script>