我有一个正在进行抓取的模型:
fetch: function (options) {
var self = this;
var def = $.Deferred();
P1Comm.get({
'dataType': 'json',
'processAjaxResponse': self.processAjaxResponse,
'onStatusInvalid': function (e) {
P1.log(e, 'status');
},
'onSuccess': function () {
options.success;
def.resolve();
},
'onError': function (e) {
P1.log(e);
def.reject();
},
'sourceURL': P1.API_APPS_ROOT + 'v1.0/accepted-terms'
});
return def.promise();
},
我最近更新了这个以获得延迟功能。但是现在这已经破坏了我在视图中的功能,该视图设置了获取的数据并将其放入模型中。
fetchAcceptedTerms: function () {
var self = this;
this.appAcceptedTerms = new T1AppAcceptedTerms();
this.acceptedTerms = new AppAcceptedTerms();
this.acceptedTerms.fetch({
success: function (data) {
if (data.meta.status === 'success') {
self.appAcceptedTerms.set(data.data);
}
}
});
},
在我将fetch的结构更改为包含deferred之前,此函数运行正常。
有人能指出我做错的方向吗?
由于
更新:
fetch工作时(延迟之前)是这样的:
fetch: function (options) {
var self = this;
return P1Comm.get({
'dataType': 'json',
'processAjaxResponse': self.processAjaxResponse,
'onStatusInvalid': function (e) {
P1.log(e, 'status');
},
'onSuccess': options.success,
'onError': function (e) {
P1.log(e);
},
'sourceURL': P1.API_APPS_ROOT + 'v1.0/accepted-terms'
});
},
答案 0 :(得分:0)
由于Deferred
和get
已经返回Promise对象,因此不清楚为什么您需要额外的fetch
,但正如评论者已经指出的那样,您还需要实际上并没有调用options.success
函数:
'onSuccess': function () {
options.success;
def.resolve();
}
应该是
'onSuccess': function(data) {
options.success(data);
def.resolve();
}