使用回调的异步JavaScript

使用回调的异步JavaScript,javascript,asynchronous,callback,Javascript,Asynchronous,Callback,我是JavaScript新手,从各种资源中了解到,如果JavaScript函数与回调相结合,它们是异步的。在web上搜索了10多天之后,我找不到关于JavaScript中回调如何异步运行的解释。给出了一些AJAX示例,但它们没有提供明确的答案,有人能解释JavaScript中的回调如何异步运行以下代码吗 function myFunc(a,b,callback){ var callbackValue = callback(); var add= a+b; var subt

我是JavaScript新手,从各种资源中了解到,如果JavaScript函数与回调相结合,它们是异步的。在web上搜索了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; ......... .......
不等待回调()的结果

异步-不同时发生


同步意味着页面必须等待JavaScript执行。使用asynchronous时,页面不必等待jaJavaScript的执行。如果不使用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秒过去(使用
newdate().getTime()
)进行检查)

不,简单地将函数作为参数传递并不会使任何事情异步。JavaScript中的异步功能包括
setTimeout
setInterval
、事件处理程序、web工作程序等。因此,根据您说“需要10秒”时回调的操作,如果它不使用异步功能,则它不是异步的。异步回调的示例:。此处需要回调的原因是,由
setTimeout
运行的匿名函数计划从执行
setTimeout
时起运行1000ms。因此,
test
函数不能返回所需的值,相反,您必须使用回调函数,以便回调函数在值可用时(1000毫秒后)可以访问该值@Ian:我认为您应该回答这个问题。谢谢@Ian消除了我的疑虑