javascript - 承诺中的承诺
问题描述
如何处理下一个promise问题情况:我需要为每个人解决宠物,解决宠物后触发事件,解决所有人时触发最后一个事件:
(async() => {
const personsArr = await Promise.all(persons.map(async (person) => {
await someSyncFunc();
const petsArr = await Promise.all(pets.map(async (pet) => {
await asyncSetPetName(pet, person);
}));
Promise.resolve(petsArr)
.then(async () => someSyncFunc());
.then(() => console.log('pets resolved'));
}));
Promise.resolve(personsArr)
.then(async () => someSyncFunc());
.then(() => console.log('persons resolved'));
})();
问题首先Promise.resolve
是personArr的计数。
解决方案
这Promise.resolve(arr).then(…)
没有任何意义。不仅arr
已经是一个数组(没有什么需要解决的),而且在使用/then
时也不应该使用:async
await
(async() => {
const personsArr = await Promise.all(persons.map(async (person) => {
const petsArr = await Promise.all(pets.map(async (pet) => {
return asyncSetPetName(pet, person);
}));
console.log('pets resolved');
}));
console.log('persons resolved');
})();
推荐阅读
- c# - 以正确的方式为 HttpClient 链接 HttpMessageHandler
- c++ - C++ wxWidgets显示并生成二维码
- python - 如何在 Pyautocad 中创建尺寸线?
- node.js - 以下情况的 mongoDb 查询是什么?
- javascript - NODE JS - 通过带有 if/else 语句的 POST 请求循环的问题
- vb.net - 裁剪区域在新位图中有 x 和 y 偏移,但前提是原始位图已缩放
- python - 错误:找不到满足文本编辑器要求的版本
- react-native - 如何将 useState() 与 Flatlist 数据一起使用?
- python - 如何在 API 调用中过滤带有扩展名的文件名?
- c# - 使用条件无法正常获取结果(C#)