[英]AJAX call inside Ember.RSVP.Promise
我有以下通用代码来调用AJAX请求。 我的问题是$ .ajax是否必须使用“ return”关键字(因为执行$ .ajax无论如何都会返回一个Promise)还是出于其他目的?
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;
},
就像其他promise库(Native,Bluebird等)一样, resolve
, reject
函数实际上是回调,因此不需要在new Promise
返回。 (但是,如果您从未致电解决或拒绝,您的承诺将永远待定)。
RSVP.Promise
的返回中唯一需要的返回,就像您在底部RSVP.Promise
那样-尽管只有在await
或then
doXhr
另外,简洁的提示:
使用最新的余烬,您可以这样做:
import { Promise } from 'rsvp';
new Promise((resolve, reject) => {
// stuff
});
有关如何执行promise的函数体,您需要查看Promise的构造函数: https : //github.com/tildeio/rsvp.js/blob/master/lib/rsvp/promise.js# L143
resolver
功能(做出新承诺时定义的功能)将传递到此处https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/-internal.js#L231 ,然后进行评估。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.