【发布时间】:2017-11-13 22:45:38
【问题描述】:
我有一个组件类和服务类。当收到 http 200 状态代码时,我有翻转标志的逻辑。根据收到的响应,我使用 if 条件翻转标志。
Requests(data:Array<String>):Observable<any>{
return this.http.post(this.Url,data)
.map(
(res:Response) => {
if(res.status === 200 || res.status===201) {
return res.json()
}
}
)
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
组件文件是这样的。
methodName(selectedData){
this.service.Requests(Id).subscribe((Response => {
this.rResponse = Response;
}));
if(rResponse){
// My logic to flip the flag
}
}
}
}
因此,根据从服务收到的响应,我将翻转标志。
但是当我在调试器工具中运行我的代码时,即使 rResponse 变量中有值,翻转标志的逻辑也不会被调用。实际上,在调用 methodName 函数时,代码流会先尝试在 if 循环下检查 rResponse 的值,然后在最后调用 subscribe 方法。
如果您可以请建议订阅方法的工作流程。为什么在调用实际 subscribe 方法之前调用 if 条件。
这不是重复的,因为我想了解为什么流程不进入我的 if 循环。没有什么是未定义的。我正在从服务中获取价值
【问题讨论】:
-
Observable Undefined的可能重复
-
立即调用订阅方法。 你传递给它的回调不是,这就是异步请求处理的重点。
标签: angular angular2-services angular-http