我想在一段时间后开始一些工作,并且希望这项工作通过Promise返回其价值。
不幸的是,当您建立承诺时,承诺的主体会立即执行。
因此,以下代码将打印“已执行承诺”,然后打印两个日期。我希望代码先打印第一个日期,然后打印“承诺执行”,然后打印最后一个日期。
我应该采用哪种方法?
JS代码:
let p = new Promise(function(resolve) {
console.log("Promise executed");
resolve(1);
});
setTimeout(function() {
console.log(new Date());
p.then(function() {
console.log("All done");
console.log(new Date());
});
}, 1000);
答案 0 :(得分:3)
您可以通过将承诺包装到函数中来延迟承诺的创建
file.choose()
答案 1 :(得分:1)
您可以使用Promise创建delay
函数,例如:
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
delay(1000).
then(() => console.log(new Date())).
then(() => console.log("Promise executed"))
答案 2 :(得分:0)
在定时器中包装计时器,然后在解决了计时器承诺后运行代码,如下所示:
new Promise(resolve=>setTimeout(resolve,1000))
.then(()=>{
console.log("Promise executed")
})
答案 3 :(得分:0)
根据要求打印日期。
var printDates = () => {
console.log('first date:', new Date());
return new Promise((resolve) => {
setTimeout(() => {
console.log("Promise executed");
setTimeout(() => {
console.log('second date:', new Date());
resolve('All done');
}, 2000);
}, 2000);
});
}