繁体   English   中英

Ember.RSVP.Promise中的AJAX调用

[英]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等)一样, resolvereject函数实际上是回调,因此不需要在new Promise返回。 (但是,如果您从未致电解决或拒绝,您的承诺将永远待定)。

RSVP.Promise的返回中唯一需要的返回,就像您在底部RSVP.Promise那样-尽管只有在awaitthen 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM