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' 对象,它不是未定义的,而是指向一个函数:
- 函数(a){return null!=a?n.extend(a,d):d}
我在这里做错了什么?我在 jquery 网站上看到 here 作为票证发布的类似问题,但这已解决,因为 对我有效 。
我尝试使用 jquery 1.11.1 和 2.1.4。两个版本都显示相同的问题。
感谢@roippi 指出语法错误。
应该是
return deferred.promise();
而不是
return deferred.promise;
缺少括号,在 'promise' 之后。
通过一个简单的 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' 对象,它不是未定义的,而是指向一个函数:
- 函数(a){return null!=a?n.extend(a,d):d}
我在这里做错了什么?我在 jquery 网站上看到 here 作为票证发布的类似问题,但这已解决,因为 对我有效 。
我尝试使用 jquery 1.11.1 和 2.1.4。两个版本都显示相同的问题。
感谢@roippi 指出语法错误。
应该是
return deferred.promise();
而不是
return deferred.promise;
缺少括号,在 'promise' 之后。