gpt4 book ai didi

javascript - 好奇 setTimeout() 函数如何工作

转载 作者:行者123 更新时间:2023-12-03 03:19:53 27 4
gpt4 key购买 nike

如果您帮助我理解函数 setTimeout(),我将不胜感激。请引用以下代码:

function doLog() {
console.log(111);
}

var promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(doLog());
}, 4000)
});

promise.then(() => {
setTimeout(function(){
console.log('DONE');
}, 3000);
})

它工作得很好;首先我得到111 4 秒后消息,然后我收到 DONE第一条消息后 3 秒内发送消息。现在我更改这部分代码(在我看来,目的是使其更短):

var promise = new Promise((resolve, reject) => {
setTimeout(resolve(doLog()), 4000)
});

问题描述:resolve里面的代码立即执行,而我预计它会在 4 秒内解决。

寻求您的帮助:

  1. 为什么要在resolve里面编码立即被处决?因为我相信延迟 4000 被忽略了,如果是的话,请帮助我理解为什么?

  2. 如何 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com