首页 > 解决方案 > 承诺中的承诺

问题描述

如何处理下一个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的计数。

标签: javascriptasynchronouspromiseasync-awaites6-promise

解决方案


Promise.resolve(arr).then(…)没有任何意义。不仅arr已经是一个数组(没有什么需要解决的),而且在使用/then时也不应该使用:asyncawait

(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');
})();

推荐阅读