在我的应用程序中,我正在尝试实现一个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;
});
}
如何将getAllItem1ToConnect
和getAllItem2ToConnect
组合为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