質問
下記のコードの関数asyncAwaitVariables
とasyncAwaitDirect
の違いが謎過ぎます。
awaitをPromise変数に使うかPromiseを返却する関数の実行結果に使うかで結果が変わるのはなぜなのでしょうか。
コード
JavaScript
1'use strict'; 2 3const start = new Date(); 4const callback = () => { 5 const end = new Date(); 6 const lapseMs = end.getTime() - start.getTime(); 7 return `${lapseMs}ミリ秒後`; 8}; 9const createTimeoutPromise = (ms, callback) => { 10 return new Promise(resolve => { 11 setTimeout(() => { 12 resolve(callback()); 13 }, ms); 14 }); 15}; 16const asyncAwaitVariables = async (ms, callback) => { 17 const results = []; 18 const promise0 = createTimeoutPromise(ms, callback); 19 const promise1 = createTimeoutPromise(ms, callback); 20 const promise2 = createTimeoutPromise(ms, callback); 21 results.push(await promise0); 22 results.push(await promise1); 23 results.push(await promise2); 24 console.log('asyncAwaitVariables', results); 25}; 26const asyncAwaitDirect = async (ms, callback) => { 27 const results = []; 28 results.push(await createTimeoutPromise(ms, callback)); 29 results.push(await createTimeoutPromise(ms, callback)); 30 results.push(await createTimeoutPromise(ms, callback)); 31 console.log('asyncAwaitDirect...', results); 32}; 33const main = () => { 34 const ms = 100; 35 asyncAwaitVariables(ms, callback); 36 asyncAwaitDirect(ms, callback); 37}; 38main();
出力結果
JavaScript
1asyncAwaitVariables [ '102ミリ秒後', '104ミリ秒後', '104ミリ秒後' ] 2asyncAwaitDirect... [ '104ミリ秒後', '206ミリ秒後', '306ミリ秒後' ]
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/25 11:05
2020/02/25 11:39 編集
2020/02/25 11:41
2020/02/25 13:13
2020/02/25 13:56
2020/02/26 15:26