如何使这个返回promise的函数不会阻塞其他代码? [重复]

问题描述 投票:1回答:1

我是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,但我似乎无法做到这一点。

javascript es6-promise
1个回答
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");
© www.soinside.com 2019 - 2024. All rights reserved.