我正在尝试构建应用程序,我在其中发送一个get请求以从组件获取数据。该请求将被调用,数据将被用于执行下一步。但是,它正在执行下一步,直到我得到服务响应。
这是我的服务文件:
getSabhaListDetailsName(sabhaMandalName: string): Observable<any> {
const sabhaListDetailsNameURL = this.rooturl + 'sabhatypebysabhaname';
return this.http
.post(sabhaListDetailsNameURL,{}, { params: { sabha_name: sabhaMandalName } })
.pipe(map(this.extractData),
catchError(this.handleError<any>('sabhaListDetailsNameURL')));
}
这是我的组件文件,我从那里调用服务
this.sabhaService.getSabhaListDetailsName(element.sabha_id).subscribe(result => {
this.tempRetrieveSabha = result.data.sabhaList;
//return this.tempRetrieveSabha;
// });
console.log(this.tempRetrieveSabha);
this.tempRetrieveSabha.forEach(
element1 => {
console.log(this.tempRetrieveSabha);
if (element1.sabha_type == element.sabha_type) {
this.tempSabha_ID = element1.id;
this.tempSabha_Type = element1.sabha_type;
this.tempFollowup_ID = element.followup_id;
}
})
});
在遍历数组之前,如何等待http请求完成。
答案 0 :(得分:0)
Rxjs的subscription方法将发出HTTP Ajax请求以触发API调用。您需要将Array循环移动到component中的subscription方法内。也可以请添加“ extractData”代码。
在当前代码中看不到任何问题。
答案 1 :(得分:0)
尝试实现异步和等待功能或承诺。
例如:
async function getProcessedData(url) {
let v;
try {
v = await downloadData(url);
} catch(e) {
v = await downloadFallbackData(url);
}
return processDataInWorker(v);
}
引用: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function