角度组合2承诺对1承诺



在我的应用程序中,我正在尝试实现一个loadAll方法。

需要做的是调用2个http方法来加载数据。

这两种方法返回promise。

当我试图将它们组合成一个承诺时,我会出错。

loadAll() {
return new Promise((resolve, reject) => {
resolve(
this.getAllItem1ToConnect(),
this.getAllItem2ToConnect();
);
}
);
}

我意识到这是错误的,我该如何实现?

getAllItem1ToConnect方法:

getAllItem1ToConnect() {
return this.http.get<Item1[]>(this.path + '/item').toPromise().then((res: Item1[]) => {
this.items1 = res;
});
}

如何将getAllItem1ToConnectgetAllItem2ToConnect组合为1承诺?

您可以使用Promise.all。这取一个Promises的数组,并返回一个单独的Promise

function func1() {
return new Promise( (res, rej) => {
setTimeout(() => res('from func1'), 1000);
});
}
function func2() {
return new Promise( (res, rej) => {
setTimeout(() => res('from func2'), 1000);
});
}
Promise.all([func1(), func2()]).then( res => console.log(res));

所以,在你的情况下,你想要:

const promise = Promise.all([
this.getAllItem1ToConnect(),
this.getAllItem2ToConnect()
]);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

相关内容

  • 没有找到相关文章