Array.prototype.map()で非同期処理する方法

Async/Await使ったりしている中でハマった。

結論

ここを読む。

2ality.com

そしてPromise.allでラップする。

async function AsyncFetch(urls) {
    const fetchArray = urls.map( url => fetch(url) );
    return Promise.all(fetchArray);
}

こういう感じ。

FetchはPromiseを返すので、それをPromise.allで包んで、全ての処理が終わるのを待つ感じでうまくいく。Promise.allしないとmapは即座に終わったことにされてしまって期待通りに動かない。


http://2ality.com/2016/10/async-function-tips.html#arrayprototypemap

の内容をよく読む。