0

我是 JavaScript 新手,从各种资源中我读到 JavaScript 函数如果与回调耦合,则它们是异步的。在网络上严格搜索 10 多天后,我找不到关于 JavaScript 中的回调如何异步运行的解释。给出了一些 AJAX 示例,但它们没有提供明确的答案,谁能解释 JavaScript 中的回调如何为以下代码异步运行?

function myFunc(a,b,callback){
    var callbackValue = callback();
    var add= a+b;
    var subt= a-b;
    var mult= a*b;
    var div= a/b;
    ...
    ...
    ...
    ...
    ...
    var totalValue= add+callbackValue;
}

function myFunc(a,b,function(){//complex scientific operation which takes 10 secs });

当我在上述代码中的“myFunc”中使用回调时,这是否意味着当在“myFunc”中调用 callback() 时,它会异步运行并且程序流程继续使用 var add= a+b; 变种= ab;......... ....... 不等待回调()的结果;?

4

2 回答 2

0

异步 - 不同时发生。

同步意味着页面在 JavaScript 执行时必须等待。使用异步页面不必等待 jaJavaScript 的执行

于 2013-08-10T06:24:11.527 回答
0

是和不是。如果你不使用 setTimeout/setInterval,那么它会同步运行。

// alert after 5 seconds
function func(f) {
    f();
    alert('Hello');
}

func(wait5);

但是如果使用 setTimeout,它可以在单独的执行上下文中运行。我会谷歌这个,因为它是修辞解释。

// alert immediately, then wait 5 seconds
function func(f) {
    setTimeout(f, 0);
    alert('Hello');
}

func(wait5);

当然,在这种情况下,wait5 将是一个等待 5 秒的函数。如果您愿意,可以创建此函数,只需运行一个 while 循环,直到 5 秒过去(使用检查new Date().getTime()

于 2013-08-10T09:07:53.253 回答