我无法理解如何将单个Promise调整为一系列Promise,一旦两个API调用都返回,它就会解析。
如何将下面的代码重写为Promises链?
function parseTweet(tweet) {
indico.sentimentHQ(tweet)
.then(function(res) {
tweetObj.sentiment = res;
}).catch(function(err) {
console.warn(err);
});
indico.organizations(tweet)
.then(function(res) {
tweetObj.organization = res[0].text;
tweetObj.confidence = res[0].confidence;
}).catch(function(err) {
console.warn(err);
});
}

感谢。
答案 0 :(得分:5)
如果您希望同时运行调用,则可以使用Promise.all。
Promise.all([indico.sentimentHQ(tweet), indico.organizations(tweet)])
.then(values => {
// handle responses here, will be called when both calls are successful
// values will be an array of responses [sentimentHQResponse, organizationsResponse]
})
.catch(err => {
// if either of the calls reject the catch will be triggered
});
答案 1 :(得分:0)
您也可以通过将它们作为链返回来链接它们,但它不如promise.all() - 方法那样有效(这只是这样做,然后是其他的等等)如果你需要结果api-call 1 for api-call 2这将是要走的路:
function parseTweet(tweet) {
indico.sentimentHQ(tweet).then(function(res) {
tweetObj.sentiment = res;
//maybe even catch this first promise error and continue anyway
/*}).catch(function(err){
console.warn(err);
console.info('returning after error anyway');
return true; //continues the promise chain after catching the error
}).then(function(){
*/
return indico.organizations(tweet);
}).then(function(res){
tweetObj.organization = res[0].text;
tweetObj.confidence = res[0].confidence;
}).catch(function(err) {
console.warn(err);
});
}