我对承诺还是比较陌生,而我正在做的所有道路都引导我Promise.all()
,但我不确定如何处理结果。
我有一些像这样的数据
let data = {
"format_oid":["35474527960032","2595837960032"]
};
然后我将它传递给像
这样的函数server.js
jobHandler.handle(data)
.then((info) => {
console.log(info);
})
.catch((err) => {
console.error(err);
});
在jobHandler
课程中我有
jobHandler.js
class Handler {
// constructor etc
handle(data) {
return this.extract(data);
}
extract(data) {
let request = data.format_oid.map( (releaseId) => {
return this._getReleaseId(releaseId);
});
return Promise.all(request);
}
_getReleaseId(releaseId) {
return new Promise( (resolve, reject) => {
if (_hasRelease(releaseId)){
resolve('yay');
} else {
reject('boo');
}
});
}
目前request
将包含一系列承诺,例如[ Promise { <pending> }, Promise { <pending> } ]
我如何在 server.js 中处理这一系列的承诺?
答案 0 :(得分:4)
一个承诺可以解决一个结果。 Promise.all()
解析为一系列结果,每个承诺的一个结果就是承诺的原始数组,其顺序与承诺的顺序相同。
我如何在server.js中处理这个承诺数组?
aHandlerObject.extract(data).then(results => {
// results is an array of resolved values
// one for each call to this._getReleaseId(...)
}).catch(err => {
// handle error here
});