对于 Angular 2 来说是全新的,并且在捕获 http 调用的结果时遇到问题。调用很简单,只返回带有成功/失败和消息的 json。我已经开始对这些调用使用 promises 并且可以在浏览器中显示结果,但无法记录或提醒结果。如果您需要更多信息,请告诉我。
服务:
deleteTsUser(params){
var url = this.userDeleteUrl + '?' + params.toString();
return this.http.get(url)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
组件:
var result = this._tsUserService.deleteTsUser(params)
.then(
r => {
this.result.result = r.result,
this.result.messages = r.messages
}
);
console.log('RES: ' + this.result.result)
模板:
{{ result.result }} :: {{ result.messages }}
结果在模板中正确显示,但 console.log 消息只记录“Res:”...为什么这不起作用?我错过了一些非常基本的东西,对吧?谢谢。
最佳答案
因为:
var result = this._tsUserService.deleteTsUser(params)
.then(
r => {
this.result.result = r.result,
this.result.messages = r.messages
}
);
是一个异步操作。当您的 deleteTsUser
方法完成时,结果将在 then
回调中准备就绪。
var result = this._tsUserService.deleteTsUser(params)
.then(
r => {
this.result.result = r.result;
this.result.messages = r.messages;
console.log('RES: ' + this.result.result);
}
);
将记录结果。
我建议您阅读:How do I return the response from an asynchronous call?关于javascript的异步行为
关于javascript - Angular 2 中的 http 调用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385361/