gpt4 book ai didi

Angular Http 不工作。 Promise 与 Observable 方法混合

转载 作者:太空狗 更新时间:2023-10-29 17:42:59 26 4
gpt4 key购买 nike

我正在尝试将数据从 Angular 发布到后端 Node js 文件。表单提交后调用以下函数:

cmdSubmit() : void 
{
console.log(this.cli);
this.Cliservice.postdata(this.cli)
.then(clidata => this.clidata.push(clidata),
error => this.errorMessage = <any>error);

}

postdata函数代码:

postdata(obj: any): Promise<any> {
alert('hello');
let body = JSON.stringify({ obj });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });

return this.http.post(this.runUrl, body, options)
.map(this.extractData)
.catch(this.handleError);

/*return this.http.post(this.runUrl, body, options)
.map(this.extractData)
.catch(res => {
// do something

// To throw another error, use Observable.throw
return Observable.throw(res.json());
});*/


}

private extractData(res: Response) {
let body = res.json();
return body.data || { };
}

private handleError (error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}

}

但是这里什么也没有发生。我没有收到任何错误消息。你能就此提出任何建议吗?

最佳答案

每个返回 ObservableHttp 函数都必须附加一个 .subscribe() 方法。当您错过此方法时,请求将不会执行。因此,将 .subscribe() 方法附加到每个函数。

正如评论中所说,您使用了两种方法:Promise 样式Observable 样式,因此我建议您使用一种通用样式。

this.http.post(this.runUrl, body, options)
.map(this.extractData).subscribe(/*here your parameters*/);

关于Angular Http 不工作。 Promise 与 Observable 方法混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com