我有一个函数,它取决于http post请求函数的响应。但由于os post请求为异步,因此在获取post请求响应之前执行get函数。所以我得到了错误。
任何人都可以给出等待功能的解决方案,直到请求完成在角度2中?
提前致谢。
答案 0 :(得分:1)
例如,如果你有一个进行服务调用的函数,并且你希望在服务调用成功执行后再调用一个函数,那么你需要调用第一个函数的.susbcribe中的第二个函数
this.serivce.servcefunction(yourrequest).subscribe
(data =>
{
secondfunctiontoexecute();
},
Error =>
{
alert("failed")
})
答案 1 :(得分:0)
post请求返回一个Observable,因此您需要订阅该Observable。
let post = {JSON to POST};
this.http.post(this.url, JSON.stringify(post))
.subscribe(response => {
functionToExecute()
},
(error: Response) => {
if (error.status === STATUS_ERROR) {
handleExpectedError();
} else {
handleUnexpectedError();
}
});
您应该提取可重用的错误处理方法,因此您不必在写入的每个POST请求中将相同的代码写入不同的http错误。