【问题标题】:Will Second Promise wait for the First Promise to complete Before it startSecond Promise 是否会等待 First Promise 完成才开始
【发布时间】:2020-03-20 14:42:22
【问题描述】:

所以我在学习promise一段时间后正在做一个项目,我在当前的项目中需要它,但我被结果吓到了。

我有两个承诺,promise1promise2,在 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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多