jquery promise.done 不是函数

jquery promise.done is not a function

通过一个简单的 jquery ajax 调用,我正在 return 调用一个由调用者处理的承诺对象。

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() { ... });

但上面的代码失败并出现错误 Uncaught TypeError: promise.done is not a function

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

我在这里做错了什么?我在 jquery 网站上看到 here 作为票证发布的类似问题,但这已解决,因为 对我有效

我尝试使用 jquery 1.11.1 和 2.1.4。两个版本都显示相同的问题。

感谢@roippi 指出语法错误。

应该是

return deferred.promise();

而不是

return deferred.promise;

缺少括号,在 'promise' 之后。