2013-06-27 25 views
2

我正在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函数回调是如何工作的。任何人都可以告诉我一个例子如何函数回调工作或给我一个链接,所以我可以挖掘?

+0

你的代码是语法不正确。提供正确的一个。 – zerkms

+0

它在这里被称为:https://github.com/Atmosphere/atmosphere/blob/4af1424a04b1568a02bc14dce05e53b04dcf6ef6/modules/jquery/src/main/webapp/jquery/jquery.atmosphere.js#L2063 –

+0

@Joseph Silber:'request.onMessage (响应){}'---哦,我看,这是正确的,但有冗余'{}' - 这可能指向一个错误。 – zerkms

回答

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); 
     } 

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

+0

OK,你能告诉我f为如何称为请求 – user1595858

+0

我仍然没有得到,你可以用简单的例子不出来使用气氛代码解释。 – user1595858

+0

不是,我在这方面没有太多的专业知识。我建议你谷歌“JavaScript面向对象编程”。 – Barmar