クリックして開く
async
,await
よりthen
使うといいかも?
クリックして開く
function delay(ms, value) {
return new Promise((resolve) => setTimeout(() => resolve(value), ms));
}
function* asyncIterator(data) {
for (const ms of data) {
const index = data.indexOf(ms);
yield delay(ms, index);
}
}
const data = [];
const iterator = asyncIterator(data);
(async () => {
for (let i = 0; i < 5; i++) {
const X = Math.floor(Math.random() * 5000);
data.push(X);
}
console.log(data);
for (const promise of iterator) {
promise.then((result) => console.log(result));
}
})();
`async`,`await`を使うと、処理が完了するまで待機してしまいます。`asyncIterator`には`yield`で`Promise`だけ
を渡し、呼び出し側で`then`を実行することで非同期処理を実現します