关于javascript中同步和异步回调的说明

问题描述 投票:0回答:1

iam目前正在研究JavaScript中的回调和异步编程的概念。为此,我阅读了由Philip Ackermann(ISBN:937-3-8362-5696-4)撰写的“ JavaScript”一书中的相应章节。但是我在理解术语异步适用于本书示例中使用的回调时遇到了问题。

我目前的了解是,我可以像这样编写同步回调:

function synchronousCallback(text, callback) {
    //other code
    callback(text);
}
synchronousCallback("End of function", console.log);

在上面的示例中,我认为回调仅是嵌套函数调用。而已。但是在本书的类似示例中,作者将这种函数称为异步。参见下面的确切示例:

function asyncFunction(callbackFunction) {
    //some code
    console.log('Before callback');
    callbackFunction();
    console.log('After callback');
    //some more code
}
function callbackFunction() {
    console.log('called callback');
}
asyncFunction(callbackFunction);

我对代码执行的理解是,一旦“其他代码”完成,该回调将立即执行。该回调将不会添加到javascript引擎的回调队列中,因此将被同步/阻止。

在我看来,与setTimeout()setInterval()一起使用时,回调是异步的。

也许这本书中的示例令人误解,或者在那种情况下我误解了异步这个术语,或者我不正确地理解了这种回调方案的执行顺序。

感谢您的帮助或澄清

javascript asynchronous callback
1个回答
1
投票

您给出的示例没有任何异步。

如果JavaScript事件循环继续运行程序的其余部分,直到外部因素(在setTimeout情况下为时间流逝)触发回调,则回调是异步的。

或者这本书是错误的,或者您在书中给出的“相似”示例中没有充分表达所有内容。

© www.soinside.com 2019 - 2024. All rights reserved.