使用回调的异步JavaScript

时间:2013-08-10 06:10:11

标签: javascript asynchronous callback

我是JavaScript新手,我从各种资源中读到,如果JavaScript函数与Callbacks相结合,那么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;         var subt = a-b;         .........         ....... 无需等待回调结果();?

2 个答案:

答案 0 :(得分:0)

异步 ​​- 不同时发生。

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

答案 1 :(得分: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()检查)