繁体   English   中英

此JavaScript函数是否需要返回Promise?

[英]Does this JavaScript function need to return a Promise?

假设我有一些JS可以像这样进行AJAX调用:

$.getJSON(myUrl, { targetState: state }, function (jsonData) {
}).success(function (jsonData) {
    ...
    ...
    ...
});

现在,让我们假设我要将这段代码包装在一个函数中,并使其在成功块中返回一些值,以便可以在应用程序的各个位置调用它。 我创建的函数应该返回Promise吗? 我以为它可能可以,但是我从未创建过一个返回Promise的JS函数,所以我不确定何时需要这样做。

我创建的函数是否应返回Promise

是。 如果要使用promise,则每个执行异步操作的函数都应为其结果返回一个promise。 确实没有例外。

将此代码包装在函数中,并在成功块中返回一些值

好消息:这并不复杂,因为$.getJSON已经使您可以使用。 现在,您需要做的就是使用then方法 -您可以传递回调以对结果进行处理,并获得新的promise作为回调的返回值。 您只需用then代替success ,并添加一些return s:

function target(state) {
    var myUrl = …;
    return $.getJSON(myUrl, { targetState: state })
//  ^^^^^^
    .then(function (jsonData) {
//   ^^^^
        /* Do something with jsonData */
        return …;
//      ^^^^^^
    });
}

使用promise,您不再需要将回调传递给$.getJSON函数。

所以我可以在我的应用程序的不同地方调用它

现在,您可以调用该target函数,并在另一个回调中获取返回的promise的结果:

target({…}).then(function(result) {
    …; return …;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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