首页 > 解决方案 > 手动销毁未解决的承诺

问题描述

const array = [1, 2, 3]
const wrapper = (e) => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if(e === 2) {
                reject(e+":rejected")
            } else {
                console.log(e+":resolved")
                resolve()
            }

        }, e * 1000);
    })
}

const main = async() => {
    try {
        await Promise.all(array.map(e => wrapper(e)))
    } catch(e){
        console.log(e)
    }
}

main()

电流输出:

1:resolved
2:rejected
3:resolved

预期输出:

1:resolved
2:rejected

当一个承诺被拒绝时,如何取消未解决的承诺。在这种情况下,我将取消承诺 3

for(let i = 1;i <= 3;i ++) {
    await wrapper(i)
}

这不是一个解决方案,因此我想像多线程一样一次运行函数,而不是一个一个地运行。这就是我使用promise.all的原因

标签: javascriptnode.jspromise

解决方案


推荐阅读