1

为什么以事件处理函数匿名函数形式传递的回调函数确保回调函数在被调用函数执行后执行?

所以我的问题是:

情况1:

$.get( "myhtmlpage.html", myCallBack( param1, param2 ) ); //this wont work

案例二:

 $.get( "myhtmlpage.html", function() { // will execute $.get and then myCallBack

            myCallBack( param1, param2 );

             });

为什么会这样?

4

2 回答 2

1

JavaScript 的核心是一种单线程语言,每个动作都由事件触发。

浏览器在“事件循环”中等待事件发生(例如,用户输入设备事件、计时器事件、AJAX 事件等),并且对于每个事件,它都会调用任何已注册的事件处理程序(即回调)。事件。

一旦事件处理程序完成它的工作,返回传递回“事件循环”。

因此,当您$.get()在内部调用 jQuery 库时,会创建一个XMLHttpRequest对象并将提供的回调函数注册为事件处理程序。

该函数不会立即调用。运行之后的任何其他代码$.get(),然后控制再次返回事件循环。

最终XMLHttpObject将创建一个onreadystatechange事件并将其添加到等待处理的事件队列中。

事件循环将看到该事件,找到注册的回调,并调用它。

简单的:)

于 2013-06-07T16:35:46.957 回答
0
myCallBack( param1, param2 )

这是一个函数调用,而不是函数语句,而您需要一个函数作为 $.get() 的第二个参数的参数。

你也可以

$.get( "myhtmlpage.html", myCallBack);
于 2016-09-28T09:50:21.603 回答