牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Javascript で非同期処理の戻り値を実行順で取りたい場合のメモ

処理完了順

function func() {
  const data = [1, 4, 3, 2,];
  for (let i = 0; i < data.length; i += 1) {
     new Promise(resolve => {
      setTimeout(() => {
        resolve(data[i]);
      }, 1000 * data[i]);
    }).then(result => console.info(result));
  }
  console.info('for-end');

  return 'DONE!';
}

func();
// for-end
// "DONE!"
// 1
// 2
// 3
// 4

実行順

async function async_func() {
  const data = [1, 4, 3, 2,];
  for (let i = 0; i < data.length; i += 1) {
    const result = await new Promise(resolve => {
      setTimeout(() => {
        resolve(data[i]);
      }, 1000 * data[i]);
    });
    console.info(result);
  }
  console.info('for-end');

  return 'DONE!';
}

async_func().then((d) => {
  console.info(d);
});
// 1
// 4
// 3
// 2
// for-end
// DONE!