一般在使用 loop 的時候會習慣用到 for…of, array forEach …etc, 如果在這些程式碼段裡須搭配非同步(async)的時候會遇到一些問題
例如: 加了 async/await 沒有作用…
以下紀錄常用幾種 loop 方式搭配 async 得到的結果, 並額外介紹 async iterator
首先做個簡單的 delay 函式
1 | function delay(ms) { |
接著針對我們常見的 for loop 來做紀錄, 以下幾中與 async/await 搭配的結果都是有效的
1 | async function async_await_for_in() { |
1 | async function async_await_for_of() { |
1 | async function async_await_for_loop() { |
下面是針對陣列常用的 loop 方式, 與 async/await 搭配下都是無效的
1 | async function async_await_for_each() { |
1 | async function async_await_map() { |
先將 iterator 做出來, 這邊做了函式型與類別型
1 | function getMyIterator() { |
做好之後就可以套用於 for 之中, 並搭配 for await
來進行非同步遍歷
1 | async function async_await_async_iterator1() { |
程式碼: 點我