我正在使用POST请求在服务器上调用方法。通常服务器直接返回结果,但有时会返回“async_id”,我可以使用该方法调用另一个等待结果的方法。
我有一个角度服务,它有一个像这样的execute()方法:
public execute(module: string, command: string, params: any) {
// build body
let body = 'abc';
// do request
return this.http.post(this._url, body)
.map(data => data.json())
.switchMap(json => {
if (json.hasOwnProperty("result") && json.result.hasOwnProperty("async_id")) {
return this.execute('server', 'wait_for_finished',
{'async_id': json.result.async_id}).map(val => val.json());
}
return Observable.of(json);
})
.flatMap(json => {
// do something with JSON
// ..
return json.result;
});
}
所以我在Http对象上调用post()并将响应转换为JSON。在switchMap中我检查是否给出了async_id。如果是,我只是递归地再次调用该方法,否则我返回JSON对象。最后,我正在尝试对结果做些什么,但是我收到以下错误:
Property 'result' does not exist on type '{}'.
我做错了什么?谢谢!