This question already has answers here:
setTimeout(myFunction, 5000); vs setTimeout(myFunction(), 5000);
(3个答案)
2年前关闭。
如果您能帮助我理解功能
它运作完美;首先,我在4秒钟内收到
问题描述:
寻求帮助:
为什么
我将非常感谢您的帮助,并祝大家编码愉快!
上面的代码表示“使用文本
上面的代码表示“立即调用
(3个答案)
2年前关闭。
如果您能帮助我理解功能
setTimeout()
,将不胜感激。请参考以下代码:function doLog() {
console.log(111);
}
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(doLog());
}, 4000)
});
promise.then(() => {
setTimeout(function(){
console.log('DONE');
}, 3000);
})
它运作完美;首先,我在4秒钟内收到
111
消息,然后在第一条消息后3秒钟内收到DONE
消息。现在,我更改这部分代码(在我看来是为了使其更短):var promise = new Promise((resolve, reject) => {
setTimeout(resolve(doLog()), 4000)
});
问题描述:
resolve
中的代码会立即执行,而我希望它能在4秒内解决。寻求帮助:
为什么
resolve
中的代码立即被执行?我相信延迟4000被忽略了,如果是的话,那么请帮助我理解为什么?function(){}
包装器如何帮助防止resolve()
不立即执行?我将非常感谢您的帮助,并祝大家编码愉快!
最佳答案
setTimeout(() => {
resolve(doLog());
}, 4000)
上面的代码表示“使用文本
() => { resolve(doLog()) }
创建一个函数,并将其传递给setTimeout
,这样我的新函数可以在4秒钟内运行。运行时,请调用doLog,并将其结果传递给resolve。setTimeout(resolve(doLog()), 4000)
上面的代码表示“立即调用
doLog()
,并将其结果传递给resolve
。将resolve
的结果传递给setTimeout
,这样,如果resolve()
的结果恰好是一个函数,则该函数可以在4秒钟内运行”。实际上,resolve()的返回值不是函数,因此4秒钟后什么也不会发生。关于javascript - 对setTimeout()函数的工作方式感到好奇,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46619793/
10-11 12:01