繁体   English   中英

Observable 在 Angular 2 HTTP 请求期间未触发

[英]Observable not firing during Angular 2 HTTP request

我有以下方法,在 Angular 2 中使用 Ionic 2:

private login(params: any, url: string){
    var p = new Promise<JsonResult>((resolve, reject) => {
        let body = JSON.stringify(params);
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });
        this.http.post(url, body, options)
            .timeout(10000, new Error('Timeout exceeded during login'))
            .subscribe((res) => {
                let json = new JsonResult().deserialize(res.json());
                resolve(json);   
            }, (err) => { 
                reject(err);
            });
    });
    return p;
}

无论我做什么,订阅都没有按预期工作。 错误处理程序永远不会被触发。 甚至在超时之后也没有。

这是一个已知问题,还是我的语法有问题?

任何帮助,将不胜感激。

如果你想返回一个Promise我会这样做:

private login(params: any, url: string){
        let body = JSON.stringify(params);
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });
        return this.http.post(url, body, options)
            .timeout(10000, new Error('Timeout exceeded during login'))
            .catch(err => {
              console.log(err);
              return Observable.of([]));
            })
            .map((res) => {
                return new JsonResult().deserialize(res.json());
            }) 
            .toPromise();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM