Javascript对象参数赋值和用法

时间:2015-12-26 11:26:15

标签: javascript jquery html ajax javascript-objects

所以我有这个JavaScript对象:

var obj = { 
    conn : null,
    first : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
        e.preventDefault();
        $.ajax ({ 
            url : some value,
            // other parameters
            success : function() {
                myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
            }
        });
   },
    second : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
            e.preventDefault();
            $.ajax ({ 
                url : some value,
                // other parameters
                success : function() { 
                    // using myObj.conn now results in UNDEFINED or NULL
                }
            });
    }
};

现在,在第一个函数的AJAX调用中,基本上将值赋给conn变量,并且确定了值,但是当我尝试在第二个函数中使用相同的值时,它会声明

  

myObj.conn未定义/ null

我只是想知道如何为对象的属性赋值并保留它以备将来使用?

我确实尝试在第二个函数中使用this.conn = new Connection(params);this.conn但仍然说this.connmyObj.conn为空。 谢谢!

1 个答案:

答案 0 :(得分:-2)

你需要等到第一次ajax调用结束,试试这个:

var obj = { 
    conn : null,
    promise: null,
    first : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
            e.preventDefault();
            myObj.promise = $.ajax({ 
                url : some value,
                // other parameters
                success : function() {
                    myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
                }
            });
       });
   },
    second : function(thisIdentity) {
        "use strict";
        var myObj = this;
        $(document).on('click', thisIdentity, function(e) {
            e.preventDefault();
            if (myObj.promise) {
                myObj.promise.then(function() {
                    $.ajax({ 
                        url : some value,
                        // other parameters
                        success : function() { 
                            // using myObj.conn now results in UNDEFINED or NULL
                        }
                    });
                });
            }
        });
    }
};