使用回调的异步JavaScript
我是JavaScript新手,从各种资源中了解到,如果JavaScript函数与回调相结合,它们是异步的。在web上搜索了10多天之后,我找不到关于JavaScript中回调如何异步运行的解释。给出了一些AJAX示例,但它们没有提供明确的答案,有人能解释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
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消除了我的疑虑