javascript - Angular 2 中的 http 调用结果

标签 javascript angular

对于 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/

相关文章:

javascript - 我可以在 AngularJS 的指令声明中连接吗?

javascript - jquery .click() 事件问题(django)

angular - 如何将 AWS CodeStar 用于 Angular 应用程序?

javascript - 如何获取 *ngFor 循环唯一记录

javascript - 如何以 Angular 隐藏表格

javascript - IE10/Safari 无法隐藏 iFrame 中的对象/Flash

javascript - 表格和滚动条不刷新

javascript - 在Reactjs中管理状态时遇到麻烦

angular - 何时通过依赖注入(inject)创建服务

angular - 如何模拟 angular2 平台浏览器标题组件以进行测试