我没有通过下面的回调获得预期的结果。我正在尝试编写一个在 setTimeout 完成后执行的简单回调,但是我看到回调函数首先执行,然后是实际函数。
我在这里缺少什么?得到如下结果。
doing my homework Maths
finished my homework
这是我要运行的代码。
function doHomeWork(subject, callback){
setTimeout(function(){console.log("doing my homework:", subject)},500)
callback();
}
doHomeWork("Maths", function(){console.log("finished my homework");});
原文由 yome 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您调用
setTimeout()
时,将注册一个浏览器回调。这并不意味着后续语句也将稍后执行。它们将在调用函数setTimeout()
后立即执行。只有你传递的函数参数会在超时时被setTimeout()
调用。所以,如果回调需要在setTimeout()
参数化函数之后执行。最好将该调用移到setTimeout()
函数参数中。所以,代码看起来像