承诺不会异步运行

时间:2019-10-04 13:34:03

标签: javascript asynchronous promise

我有一个正在执行繁重工作的函数,因此我决定异步运行此函数,并防止在我的函数运行时冻结浏览器,但是在向函数添加诺言之后,什么也没有发生,并且浏览器仍然冻结,直到函数完成工作为止。所以我用一个简单的for循环模拟了我的函数繁重的工作,并在for循环内添加了一些额外的无用代码,以防止javascript引擎跳过for loop.so在我运行代码后,结果证明for循环不会异步运行,所以这里错了吗?

以下是示例代码模拟我的问题:

new Promise(resolve =>{
  //some heavy task
  for(let i=0 ; i<10000; i++){
      if(i % 2 == 0){
          console.log(i);
      }
  }
  resolve();
}).then(()=>{
  console.log("finished")
})
console.log("javascript engine should continue running");

因此,在我的想法中,首先必须运行最后一个控制台控制台日志,因为javascript应该将那个Promise推送到事件队列中,并且在for循环打印中的所有日志最终打印完成之后,但是不是这种情况。

0 个答案:

没有答案