我是JavaScript的新手,从各种资源中我了解到,如果JavaScript函数与回调耦合在一起,则它们是异步的。在web上严格搜索10+ days之后,我找不到关于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”中调用回调()时,它会异步运行,程序流将继续使用var add= a+b;var subt= a-b;..而不等待回调()的结果;?
发布于 2013-08-10 09:07:53
是也不是。如果您不使用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-10 06:24:11
异步-不同时发生。
同步意味着在执行JavaScript时,页面必须等待。使用异步时,页面不必等待jaJavaScript的执行。
https://stackoverflow.com/questions/18159177
复制相似问题