Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* 配列から呼ぶ非同期関数を直列に実行する [#n713bfd6]
** 命題 [#i137d58f]
配列がある時に、ループでその値を利用して非同期関数を呼ぶ...
** 解決 [#w2e727aa]
async function sleep(time) {
return new Promise((resolve) => { setTimeout(resolve...
}
const times = [3000, 1000, 2000];
void (async () => {
for (t of times) {
console.log(t + " start");
await sleep(t);
console.log(t + " end");
}
})();
🡳 🡳 🡳
3000 start
3000 end
1000 start
1000 end
2000 start
2000 end
- forを使う
- 非同期関数sleep()が配列timesの順番通りに3000、1000、200...
- なお、forを即時実行関数 '''void (async() => {})()'''で...
*** map()やPromise.all()を使うと順番通りに完了しない [#jd...
void (async () => {
times.map(async (t) => {
console.log(t + " start");
await sleep(t);
console.log(t + " end");
});
})();
🡳 🡳 🡳
3000 start
1000 start
2000 start
1000 end
2000 end
3000 end
void (() => {
Promise.all(times.map(async (t) => {
console.log(t + " start");
await sleep(t);
console.log(t + " end");
}));
})();
🡳 🡳 🡳
3000 start
1000 start
2000 start
1000 end
2000 end
3000 end
終了行:
* 配列から呼ぶ非同期関数を直列に実行する [#n713bfd6]
** 命題 [#i137d58f]
配列がある時に、ループでその値を利用して非同期関数を呼ぶ...
** 解決 [#w2e727aa]
async function sleep(time) {
return new Promise((resolve) => { setTimeout(resolve...
}
const times = [3000, 1000, 2000];
void (async () => {
for (t of times) {
console.log(t + " start");
await sleep(t);
console.log(t + " end");
}
})();
🡳 🡳 🡳
3000 start
3000 end
1000 start
1000 end
2000 start
2000 end
- forを使う
- 非同期関数sleep()が配列timesの順番通りに3000、1000、200...
- なお、forを即時実行関数 '''void (async() => {})()'''で...
*** map()やPromise.all()を使うと順番通りに完了しない [#jd...
void (async () => {
times.map(async (t) => {
console.log(t + " start");
await sleep(t);
console.log(t + " end");
});
})();
🡳 🡳 🡳
3000 start
1000 start
2000 start
1000 end
2000 end
3000 end
void (() => {
Promise.all(times.map(async (t) => {
console.log(t + " start");
await sleep(t);
console.log(t + " end");
}));
})();
🡳 🡳 🡳
3000 start
1000 start
2000 start
1000 end
2000 end
3000 end
ページ名: