jquery promise.done不是函数

时间:2015-05-22 20:03:37

标签: javascript jquery ajax deferred

从一个简单的jquery ajax调用开始,我将返回一个由调用者处理的promise对象。

chkSession: function() {
    if (session == undefined)
        session = new Entities.Session({});                 

        var deferred = $.Deferred();

        /* if no session cookie, return false */
        if (session.id === undefined) { 
            deferred.resolveWith(this, {result: -1});
            return deferred.promise;
        }

        /* validate the session with server */
        session.fetch({
            complete: function() {
                deferred.resolveWith(this, {result: this.result});
            }
        });
        return deferred.promise;
    }

调用代码中的其他地方......,

var promise = this.chkSession();
promise.done(function() { ... });

但是上面的代码失败并显示错误未捕获TypeError:promise.done不是函数

如果我尝试在调用者上下文中打印'promise'对象,它不是未定义的,而是指向一个函数:

  • function(a){return null!= a?n.extend(a,d):d}

我在这里做错了什么?我在jquery网站上看到类似的问题已发布here作为故障单,但是当为我工作时已解决此问题。

我尝试使用jquery 1.11.1和2.1.4。两个版本都表现出同样的问题。

1 个答案:

答案 0 :(得分:0)

归功于@roippi指出语法错误。

应该是

return deferred.promise();

而不是

return deferred.promise;
在'承诺'之后

失去了parantheses。