有条件地链接HTTP请求

时间:2017-08-29 14:20:52

标签: json angular rxjs

在使用angular(4.0.0)构建的网页上的

我正在使用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 '{}'.

我做错了什么?谢谢!

0 个答案:

没有答案