gpt4 book ai didi

javascript - Promise.all 里面的 Promise.all 对于 Promise 来说是一个很好的实践吗?

转载 作者:行者123 更新时间:2023-12-03 01:30:47 27 4
gpt4 key购买 nike

我不知道 promise.all 解决方案中的 promise.all 是否是一个好的实践。我不确定。

我需要从一组用户获取信息,然后通过此信息响应,我需要发送消息通知。

let userList = ['key1', 'key2', 'key3']; //More data can arrive
let promises = userList.map((userKey,index)=>{
return GetUserById(db.ref(`Users/${userKey}`));
});

Promise.all(promises).then(responses =>{
let notificationPromises = responses.map((user)=>{
sendNotification('message', user.token);
});
return Promise.all(notificationPromises)
}).then(()=>{
//notifications were sent
...
};

Promise.all嵌套解决这个问题是个好主意吗?

最佳答案

虽然这可行,但很难看出为什么这是比仅在第一组请求上调用 then() 更好的选择 - 请记住,then() 也返回一个 promise 。对我来说,这不仅更短,而且更清晰。很明显,您正在向每个用户发送通知:

let userList = ['key1', 'key2', 'key3']; //More data can arrive
let promises = userList.map((userKey,index)=>{
return GetUserById(db.ref(`Users/${userKey}`))
.then(user => sendNotification('message', user.token) )
});

Promise.all(promises)
.then(()=>{
//notifications were sent
// ...
});

附:在您的代码中,您需要从 map() 回调中返回一些内容,否则 notificationPromises 将是一个空值数组:

Promise.all(promises).then(responses =>{
let notificationPromises = responses.map((user)=>{
return sendNotification('message', user.token); //<< add return
});

关于javascript - Promise.all 里面的 Promise.all 对于 Promise 来说是一个很好的实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com