从一个简单的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'对象,它不是未定义的,而是指向一个函数:
我在这里做错了什么?我在jquery网站上看到类似的问题已发布here作为故障单,但是当为我工作时已解决此问题。
我尝试使用jquery 1.11.1和2.1.4。两个版本都表现出同样的问题。
答案 0 :(得分:0)
归功于@roippi指出语法错误。
应该是
return deferred.promise();
而不是
return deferred.promise;
在'承诺'之后失去了parantheses。