我有以下通用代码来调用AJAX请求。我的问题是$ .ajax是否必须使用“ return”关键字(因为执行$ .ajax无论如何都会返回一个承诺),或者是否出于其他目的?
doXhr: function(postData, requestUrl){
var promise = new Ember.RSVP.Promise(function(resolve, reject) {
return $.ajax({ //Is the "return" required on this line ?
url: requestUrl,
})
.done(function(response, status, xhrObject) {
resolve(response);
})
.fail(function(xhrObject, status, error){
reject(errorObj);
});
})
return promise;
},
答案 0 :(得分:2)
就像其他promise库(Native,Bluebird等)一样,MS Excel 2016 (X64)
Adobe Acrobat XI (with Adobe PDF printer)
,resolve
函数实际上是回调,因此无需在reject
内部返回。 (但是,如果您从未致电解决或拒绝,您的承诺将永远待定)。
返回new Promise
所需的唯一收益,就像您底部的收益一样-尽管仅当您RSVP.Promise
或await
在{{1}时}
另外,整洁的侧面提示:
使用最新的余烬,您可以这样做:
then
关于如何执行promise的函数体,您需要查看Promise的构造函数: https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/promise.js#L143
doXhr
函数(您在做出新承诺时定义的函数)将传递到此处https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/-internal.js#L231,然后进行评估。
希望这会有所帮助!