Ember.RSVP.Promise中的AJAX调用

时间:2018-08-11 14:12:26

标签: javascript jquery ajax ember.js rsvp.js

我有以下通用代码来调用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;
},

1 个答案:

答案 0 :(得分:2)

就像其他promise库(Native,Bluebird等)一样,MS Excel 2016 (X64) Adobe Acrobat XI (with Adobe PDF printer) resolve函数实际上是回调,因此无需在reject内部返回。 (但是,如果您从未致电解决或拒绝,您的承诺将永远待定)。

返回new Promise所需的唯一收益,就像您底部的收益一样-尽管仅当您RSVP.Promiseawait在{{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,然后进行评估。

希望这会有所帮助!