【发布时间】:2020-03-20 14:42:22
【问题描述】:
所以我在学习promise一段时间后正在做一个项目,我在当前的项目中需要它,但我被结果吓到了。
我有两个承诺,promise1 和 promise2,在 promise1 我有某种循环和数据加载,在 promise2 我有另一个逻辑,它不依赖于 promise1 的完成来执行。因此,由于 promise 是根据我的理解以不同方式处理这两个执行的最佳方式,这意味着 promise1 不必在 promise2 之前完成strong> 开始,还是我错了,因为从我的结果中,我可以看到 promise1 必须在 promise2 开始之前完成,但是文件中的所有其他代码都无需等待即可执行promises 完成,这很好。
如果这是 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
【问题讨论】:
-
你可能在
Promise.all()之后,它允许你同时运行多个异步任务? -
如果
Promise内部没有异步操作,则for循环甚至在定义第二个promise之前就完成了。 -
如果你想让你的第二个承诺等待第一个承诺,你应该使用 Promise.all() 。在这种情况下,您将能够同时解决这两个问题。没有其他方法可以改变 Promise 的执行。
标签: javascript promise