77441


下記のように並列で関数を実行したいのですが、エラーになります。  
`map()`を使用すればエラーは取れるのですが、戻り値を必要としないので `forEach`
のような構文が適している思うのですが、別の書方等ないでしょうか?

宜しくお願いします。

[code]

    await Promise.all(articles.forEach((article) => {
          post(article)
        }))
    
[/code]


CC BY-SA 4.0
2021-06-09T08:23:34.477
77428
2021-06-09T15:23:53.563
22565
question
javascript 非同期
JavaScriptのPromis.allをforEachで使用したい。


たとえ処理結果が必要なくとも、mapでPromiseを返してやります。

[code]

    const promises = articles.map(article=>{
       return new Promise(resolve =>{
         post(article)
      ☄  resolve("OK")
       }) 
    })
    
[/code]

これでpromisesはPromiseを返された配列になっています。

あとは、

[code]

    await Promise.all(promises)
    //次の処理
    
[/code]

とすれば、post(article)が全て終わった後に次の処理が進みます


CC BY-SA 4.0
2021-06-09T15:23:53.563
77441
2021-06-09T15:23:53.563
46780
77428
answer