在jQuery中将对象传递给回调函数

桑耶夫

我最近正在研究小型聊天模块,该模块需要不断检查服务器中是否有新消息。

我正在向服务器发送ajax请求,并且服务器保持连接状态,直到找到新消息(长时间轮询)为止。

代码 :

var chatController = function(){
 
//other variable declaration

/**
*  Ajax call to monitor the new message , on complete of ajax call sending other call
*/

this.checkNewMessage = function(){
  console.log(this); // placed this for debugging purpose
       $.ajax({
         url : SITEURL.CHECK_MESSAGE,
         data : this.currrentUserDetails,
         dataType : 'json' ,
         cache    : false,
         success  :(function(obj){
            //temp = obj;
            return obj.parseNewMessageResponse;
         })(this),
         complete: (function(obj){
            //temp = obj;
            return obj.checkNewMessage;
         })(this),  
       });
       
     
};

  // other function and variable

});

当我尝试致电

var mainController = new chatController();
mainController.checkNewMessage();

问题

我以为我可以将连续的单个请求发送到服务器,但是令我惊讶的是,我只能一个接一个地发送2个a​​jax请求。

我的调试

当我尝试调试时,我找出了this传递给第一个调用对象的点,指向chatController

         complete: (function(obj){
            return obj.checkNewMessage;
         })(this),     // this here point to chatController object
         
         

第二次this传递的对象指向ajax object

         complete: (function(obj){
            return obj.checkNewMessage;
         })(this),     // this here point to ajax object

我正在使用JavaScript闭包将chatController对象传递completejquery的参数

所以我想要的是将参数传递给jQuery complete函数的方法,以便它指向我的原始引用

疯狂

有各种可能的解决方案

您可以使用$.proxy

我认为这是最佳做法。

$.ajax({
    //...
    success: $.proxy(function(json) {
         // `this` refers to the second argument of `$.proxy`
    }, this)
});

您可以设置context选项

$.ajax({
    //...
    context: this,
    success: function(json) {
         // `this` refers to the value of `context`
    }
});

或使用闭包

var self = this;
$.ajax({
    //...
    success: function(json) {
         // `this` refers to ajax request, use self instead
         $(self).dosomething();
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正在通过引用将对象传递给构造函数

来自分类Dev

如何通过引用将对象传递给构造函数

来自分类Dev

将对象传递给jQuery.on()

来自分类Dev

Javascript-如何将原始对象传递给回调函数

来自分类Dev

将'this'对象传递给$ http服务的'then'回调函数

来自分类Dev

c ++:将对象传递给函数

来自分类Dev

将对象传递给PowerShell函数

来自分类Dev

将类似文件的对象传递给ctypes回调

来自分类Dev

jQuery如何将对象传递给另一个函数

来自分类Dev

如何将对象传递给rxjs subscription()回调函数?

来自分类Dev

将对象传递给Lua函数始终引用自身

来自分类Dev

如何将对象传递给单独的函数-Python

来自分类Dev

如何在Delphi中将对象方法作为回调方法传递给C ++ dll

来自分类Dev

将对象传递给jQuery .each()(而不是函数)会导致错误

来自分类Dev

无法将对象传递给Typescript中的构造函数

来自分类Dev

将对象传递给R中的generate()评估的函数

来自分类Dev

在AngularJS中将对象传递给$ http POST

来自分类Dev

将对象传递给jQuery.on()

来自分类Dev

Javascript-如何将原始对象传递给回调函数

来自分类Dev

在jQuery中将对象传递给回调函数

来自分类Dev

如何将对象传递给CasperJS函数

来自分类Dev

如何将对象传递给另一个模型的回调?

来自分类Dev

如何将对象传递给rxjs subscription()回调函数?

来自分类Dev

将对象传递给函数调用中的函数

来自分类Dev

如何将“此”对象传递给使用协议的函数中调用的回调函数

来自分类Dev

将对象传递给函数方法

来自分类Dev

在动态生成的html中将对象传递给javascript函数

来自分类Dev

将对象传递给函数或子过程

来自分类Dev

如何将对象传递给 std::accumulate 函数?

Related 相关文章

  1. 1

    正在通过引用将对象传递给构造函数

  2. 2

    如何通过引用将对象传递给构造函数

  3. 3

    将对象传递给jQuery.on()

  4. 4

    Javascript-如何将原始对象传递给回调函数

  5. 5

    将'this'对象传递给$ http服务的'then'回调函数

  6. 6

    c ++:将对象传递给函数

  7. 7

    将对象传递给PowerShell函数

  8. 8

    将类似文件的对象传递给ctypes回调

  9. 9

    jQuery如何将对象传递给另一个函数

  10. 10

    如何将对象传递给rxjs subscription()回调函数?

  11. 11

    将对象传递给Lua函数始终引用自身

  12. 12

    如何将对象传递给单独的函数-Python

  13. 13

    如何在Delphi中将对象方法作为回调方法传递给C ++ dll

  14. 14

    将对象传递给jQuery .each()(而不是函数)会导致错误

  15. 15

    无法将对象传递给Typescript中的构造函数

  16. 16

    将对象传递给R中的generate()评估的函数

  17. 17

    在AngularJS中将对象传递给$ http POST

  18. 18

    将对象传递给jQuery.on()

  19. 19

    Javascript-如何将原始对象传递给回调函数

  20. 20

    在jQuery中将对象传递给回调函数

  21. 21

    如何将对象传递给CasperJS函数

  22. 22

    如何将对象传递给另一个模型的回调?

  23. 23

    如何将对象传递给rxjs subscription()回调函数?

  24. 24

    将对象传递给函数调用中的函数

  25. 25

    如何将“此”对象传递给使用协议的函数中调用的回调函数

  26. 26

    将对象传递给函数方法

  27. 27

    在动态生成的html中将对象传递给javascript函数

  28. 28

    将对象传递给函数或子过程

  29. 29

    如何将对象传递给 std::accumulate 函数?

热门标签

归档