Javascript 我有一个接收结果的异步AWS.Request调用。如何返回包含另一个结果的承诺?
我有一个执行异步请求的函数foo()。这将返回一个AWS.Request,我可以通过调用函数返回并处理该请求。这将使我能够访问AWS.Request回调收到的“数据”。我想做的是让调用者能够接收一些其他值,这取决于“数据”的值: 调用者的工作方式如下:Javascript 我有一个接收结果的异步AWS.Request调用。如何返回包含另一个结果的承诺?,javascript,amazon-web-services,asynchronous,promise,callback,Javascript,Amazon Web Services,Asynchronous,Promise,Callback,我有一个执行异步请求的函数foo()。这将返回一个AWS.Request,我可以通过调用函数返回并处理该请求。这将使我能够访问AWS.Request回调收到的“数据”。我想做的是让调用者能够接收一些其他值,这取决于“数据”的值: 调用者的工作方式如下: var request = foo(); request.then(function(result) { console.log("result is:"); console.log(result); } “
var request = foo();
request.then(function(result) {
console.log("result is:");
console.log(result);
}
“result
”这是AWS请求返回的foo()
中回调函数中“data
”的值。我希望“result
”的值为newVal
或null
,并且在foo()中的回调完成时可用
我怎样才能做到这一点呢?正如前面所说,答案是按照答案将现有回调API转换为承诺,我这样解决它:
function foo() {
return new Promise(function(resolve, reject) {
awsrequest({'param1':val1, 'param2': val2},
function(err, data) {
var result = null;
if (data == condition) {
result = newVal;
}
resolve(result);
})
});
}
为什么要传递回调而不是调用请求的.promise()
方法?解决方法是promisize它。
function foo() {
return new Promise(function(resolve, reject) {
awsrequest({'param1':val1, 'param2': val2},
function(err, data) {
var result = null;
if (data == condition) {
result = newVal;
}
resolve(result);
})
});
}