[英]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.