我正在尝试运行一个异步功能,该功能将发布请求发送到服务器,并将响应记录在控制台中。每当我运行for循环时,都不会发生任何事情。我在这里检查了stackoverflow上的另一个类似问题,但在我的情况下没有任何作用。
注意,该代码适用于Android的ionic + angular。
下面是该函数的代码。
postAPI(suffixUrl, queryString, data, header: any = {}) {
// console.log(suffixUrl + "\n=>", queryString + "\n=>", data + "\n=>", header);
this.isDisabled = true;
data = (header.is == 'yes') ? JSON.parse(data) : data;
let type = this.fileNameSubStringFn(suffixUrl, '?');
return new Promise(resolve => {
this.http.post(this.con.baseUrl + suffixUrl + queryString, data)
.subscribe(res => {
// res = res.json();
// res = JSON.parse(res.data);
console.log("RES:", res);
this.hideLoader();
resolve(this.data);
return;
}, (err) => {
this.logFn("ERROR:" + JSON.stringify(err));
this.isDisabled = false;
// this.isConnected = false;
});
});
}
下面是为了提交数据而访问上述功能的代码。
var i;
for (i = 0; i < summeriesArray.length; i++) {
this.postAPI('service_summery', '', JSON.stringify(summeriesArray[i]), { is: 'yes', method: 'post' }).then(data => {
this.hideLoader();
this.toast("Successfully saved");
console.log(data);
});
}
this.postAPI
中的代码未执行,这意味着未发布数据,并且我没有收到任何错误,所以我不知道这里发生了什么。
我希望this.postAPI
在for lop中能够成功运行。
谢谢,发布了爱。
答案 0 :(得分:1)
您可以使用await关键字,因此您可以等待下一次迭代,直到“ postAPI”完成为止。
for (i = 0; i < summeriesArray.length; i++) {
const data = await this.postAPI('service_summery', '', JSON.stringify(summeriesArray[i]), { is: 'yes', method: 'post' })
this.hideLoader();
this.toast("Successfully saved");
console.log(data);
}