第二承诺会在第一承诺完成之前等待

时间:2019-11-25 10:20:33

标签: javascript promise

所以一段时间前我学习了诺言之后就在一个项目上工作,我在当前的项目中需要它,但是结果让我大吃一惊。

我有两个承诺, promise1 promise2 ,在 promise1 中,我在中有某种循环和数据加载promise2 我还有另一种逻辑,它不依赖于完成 promise1 来执行。因此,根据我的理解, promise 是处理这两个执行的最佳方式,因此这意味着 promise1 不必在 promise2 之前完成。 strong>开始还是我错了,因为从我的结果中,我可以看到 promise1 必须在 promise2 开始之前完成,但是文件中的所有其他代码无需等待即可执行以便完成承诺

如果这是Promise的默认行为,那么我将需要知道如何使这两个Promise异步运行而不相互依赖。

这是我下面的代码示例

let promise1 = new Promise((res, rej) =>{
    for(let i = 0; i < 52435435; i++){

    }
    res('done')
});

let promise2 = new Promise((res, rej) => {
    res('Done second')
})

promise1.then(txt => console.log(txt))
promise2.then(txt => console.log(txt))

console.log('Last console')

结果

Last console
app.js:12 done
app.js:13 Done second

1 个答案:

答案 0 :(得分:2)

您必须阅读有关JS工作人员池的信息。 您的for循环不会给任何其他任务机会来获得一些CPU。 使用setTimeout模拟异步过程!