javascript - Ember.RSVP.Promise 中的 AJAX 调用

标签 javascript jquery ajax ember.js rsvp.js

我有以下通用代码来调用 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 函数实际上是回调,因此不需要在 新 promise 。 (如果你从不调用 resolve 或 reject,你的 promise 将永远悬而未决)。

RSVP.Promise 的返回中唯一需要的返回就像你在底部所拥有的一样——尽管只有当你是 awaiting 或 然后ing doXhr

另外,整洁的小提示:

随着最近的 Ember ,你可以这样做:

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 函数(您在做出新 promise 时定义的函数)被传递到此处 https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/-internal.js#L231然后进行评估。

希望这对您有所帮助!

关于javascript - Ember.RSVP.Promise 中的 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800482/

相关文章:

javascript - 类型错误:处理程序未定义

javascript - 将 Python Flask JSON 字典导入 javascript 错误

javascript - 使用 JSON 数据的 Highcharts 图表空白

javascript - 在悬停时覆盖内联样式然后返回

javascript - 使用 Javascript 函数检索 Perl 哈希值

javascript - 用于 html/javascript/ajax 的 ui 库和 ide,用于创建桌面风格的应用程序

javascript - 我使用 javascript 在 jsp 中将名字的第一个字母变为大写的代码不起作用

javascript - JavaScript 和 jQuery 中的 this 和 function

javascript - 点击带有数据集的按钮,会出现具有相同数据集的div

php - 如何创建可编辑的下拉列表?使用 AJAX