angular - Angular 将 2 个承诺与 1 个承诺相结合
问题描述
在我的应用程序中,我正在尝试实现一种loadAll
方法。
需要做的是调用2个http方法来加载数据。
这两种方法返回承诺。
当我尝试将它们组合成一个承诺时,我得到了一个错误。
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
推荐阅读
- python - 熊猫日期错误
- c# - Dotnetcore 3.1 中间件 HttpContext.Request 在内存中 TestServer 集成测试期间中间件运行之前已经为空
- r - 创建具有多个变量的 VCorpus(或 VectorSource)?
- node.js - 无法使用 Mongoose 创建复合索引
- html - CSS鼠标悬停闪烁问题
- spring - JPA创建实体一张表有常量
- sql - SQL Server:如果在某些列上不重复,则插入记录
- machine-learning - 隐藏层矩阵的列在skip-gram模型中代表什么
- python - 未找到带有参数 '('',)' 的 'post_detail' 的反向操作。尝试了 1 种模式:['post/(?P
[-\\w]+)/$'] - javascript - 切割异常堆栈跟踪的一部分?