簡體   English   中英

與 res.send 的承諾

[英]Promises with res.send

在 promise 之后返回響應時出現以下問題:

let emailSent = new Promise((resolve, reject) => {
    array.forEach(async (item, i, array) => {
       //asynchronous code for send emails
       if (index === array.length -1) resolve();
    }
})

emailSent.then(() => {
   res.status(201).send({
       message: 'Email sent.',
       status: 201,
   })
}

在瀏覽器中,響應永遠不會返回。 在 promise 之后返回 res.send 的最佳方式是什么?

在不知道您正在使用的確切代碼的情況下,因為看起來您已經修剪了很多,我懷疑您有多個異步 function 調用,您正在嘗試並行執行。

對於類似的事情,您應該將每個異步調用 map 放入一個承諾列表中,然后等待它們全部在一個 promise 和Promise.all()中解決,就像這樣:

let emailSent = Promise.all(
    array.map(async (item, i, array) => {
       //asynchronous code for send emails
    })
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM