【发布时间】:2019-03-17 21:52:49
【问题描述】:
我正在尝试使用 Promise 执行 3 个 Web 服务,并且我需要在所有这些 Web 服务都执行后,如果可能按顺序返回这 3 个服务的信息。 我有这个。
这是我的服务
getServices(url: string): Promise < any > {
return this.http.get(CoordinadoresService.BASEURL + url)
.toPromise()
.then(response => {
return response.json();
})
.catch(err => err);
}
这是我的组件
getOffices() {
this.oficinas["coordinadores"] = [];
let data = this.util.getLocalStorage("coordinadores");
let promises = [];
if (data != undefined) {
for (let i = 0; i < Object.keys(data.coordinadores).length; i++) {
let url = `getOficinas/${data.coordinadores[Object.keys(data.coordinadores)[i]].ip}/${Object.keys(data.coordinadores)[i]}`;
promises.push(this.services.getServices(url).then(response => {
response["coordinador"] = response.coordinador;
this.oficinas["coordinadores"].push(response)
},
err => err));
}
Promise.all(promises).then(data => {
console.log('Both promises have resolved', data);
});
}
}
但是他在这里给我未定义的回报。为什么?
Promise.all(promises).then(data => {
console.log('Both promises have resolved', data);
});
谢谢。
【问题讨论】:
-
使用
HttpClient或Http? -
您通过调用
then来解开Promise。所以你的 Promises 数组实际上不会有任何Promise这样的。 -
SiddAjmera 我使用 Http
-
对不起,我不太明白。它的解决方案是什么?
-
“按顺序”是指三个承诺需要一个接一个地完成吗?
标签: javascript angular promise angular2-services