someFunction() {
if (array.length > 0) {
return new Promise((resolve, reject) => {
array.map(item => {
AXIOS.postItem(item).catch(err => {reject('error')});
});
resolve('resolve');
});
}
}
mainFunction() {
Promise.all([this.someFunction()]).then(() => {
this.invokeTheRest();
)}
}
就我而言,即使在执行或捕获resolve
之前,some函数也总是返回AXIOS.postItem()
。
我如何等待AXIOS.postItem()
执行?如果在catch
中捕获了错误,我怎么不能继续进行this.invokeTheRest()
?
答案 0 :(得分:2)
将someFunction的主体更改为:
someFunction () {
return array.map(item => AXIOS.postItem(item));
}
以便它返回可与Promise.all一起使用的Promises数组。
答案 1 :(得分:1)
具有someFunction返回一个诺言数组,我会说这是一个编码反模式。
我要走的方法是从someFunction返回Promise.all,这将使someFunction成为Promise,然后您就可以像其他任何Promise一样使用
。例如
someFunction() {
return Promise.all(
array.map(item => AXIOS.postItem(item)));
}
mainFunction() {
this.someFunction().then(() => {
this.invokeTheRest();
});
}