试图了解函数回调的工作原理

时间:2013-06-27 00:46:35

标签: javascript jquery

我以jQuery.Atmosphere.js为例,其中包含onMessage,onError等公共函数。在实现此API时,我已完成以下操作

var socket = $.atmosphere;
var request = new $.atmosphere.AtmosphereRequest();
request.onMessage = function(response) {
   // do what i want to do
 }

只要服务器将数据推送到浏览器,就会触发onMessage。我不明白request.onMessage(响应)如何得到通知,这是在大气api之外?我已经查看了jQuery.Atmosphere.js并且无法连接点如何工作。我不是在讨论websocket或服务器推送或任何有关大气框架的事情。我只是想了解javascript函数回调是如何工作的。任何人都可以给我一个例子,函数回调是如何工作的,或者给我一个链接,这样我就可以深入了解?

1 个答案:

答案 0 :(得分:0)

您的语法不正确,应该是:

request.onMessage = function(response) {
    // do what I want to do
};

如您所见,onMessage属性必须设置为函数。在此对象上发生Message事件时,将调用该函数。 jQuery.Atmosphere.js代码包含:

f.onMessage(response);

其中f是表示AtmosphereRequest对象的内部变量。此函数从invokeFunction()

调用
        function _invokeFunction(response) {
            _f(response, _request);
            // Global
            _f(response, jQuery.atmosphere);
        }

_requestAtmosphereRequest构造函数中的局部变量,它包含此请求对象的所有状态。这是Javascript面向对象编程的一部分;此AtmosphereRequest对象的所有使用都可以访问这些内部状态变量。