我该如何使返回promise的函数不会阻塞其他代码?

时间:2019-02-25 06:55:48

标签: javascript es6-promise

我是Promise的新手。这是我的代码

  function heavyProcess(){

    var ts = + new Date();
    while((+ new Date() - 2000) < ts ){
      //2 second delay to simulate lengthy process
    }
    console.log('after 2 seconds');

    return Promise.resolve("Done");
  }

  console.log("START");
  heavyProcess().then(function(resolve){
    console.log(resolve);
  });
  console.log("END");

它的输出是

START
after 2 seconds
END
Done

我该怎么做?我不想调用繁重的流程来阻止下一个代码。

START
END
after 2 seconds
Done

我一直在阅读有关Promise的信息,但我似乎无法完成这项工作。

1 个答案:

答案 0 :(得分:2)

这是您需要的吗?

    var p = () => new Promise((resolve, reject) => {
setTimeout(() => {
console.log('after 2 seconds');
resolve("Done");
  }, 2000);
});

console.log("START");
p().then((data) => {
  console.log(data);
});
console.log("END");

相关问题