所以一段时间前我学习了诺言之后就在一个项目上工作,我在当前的项目中需要它,但是结果让我大吃一惊。
我有两个承诺, 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
答案 0 :(得分:2)
您必须阅读有关JS工作人员池的信息。 您的for循环不会给任何其他任务机会来获得一些CPU。 使用setTimeout模拟异步过程!