[英]What's the purpose of callback function if code skips macrotasks?
最近尝试理解JavaScript中的回调函数,但是这个概念离我的理解还很远。 我有这样的代码:
function exampleFunc(callback) {
console.log("Starting...");
setTimeout(() => {
console.log("Logged after 3 secs.");
}, 3000);
callback();
}
function displayMessage() {
console.log("Log it!");
}
exampleFunc(() =>
{
console.log("Further code.");
});
displayMessage();
我预计在调用exampleFunc()
后,程序将等待 3 秒,然后调用回调和代码 rest。 但是,代码序列是:
Starting...
Further code.
Log it!
Logged after 3 secs.
为什么会这样? 我预计该程序将 output "Starting"
,然后等待并记录"Logged after 3 secs."
, 然后 go 回调和 output "Further code"
, 最后, "Log it!"
.
调用setTimeout
不会导致 function 中的代码进一步执行延迟。 setTimeout
安排一个超时时间,然后立即继续执行 function 中代码的rest 。
您需要在setTimeout
回调中调用callback
,以便它仅在 3 秒后运行。
您还需要将displayMessage
的调用放在传递给exampleFunc
的回调中。
function exampleFunc(callback) { console.log("Starting..."); setTimeout(() => { console.log("Logged after 3 secs."); callback(); }, 3000); } function displayMessage() { console.log("Log it;"). } exampleFunc(() => { console.log("Further code;"); displayMessage(); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.