javascript - AngularJs 2 : How to debug a service call?(es6 语法)

标签 javascript angularjs angular ecmascript-6 angular2-services

情况:

我刚刚学习 Angular2。我想调试对服务的调用。

正如我在 View 中看到的那样,该服务已被正确调用。

我还想记录保存结果的变量内容,但它没有像我希望的那样工作。

服务:

export class ListService 
{
    getList() 
    {
        return Promise.resolve(LIST);
    }
}

调用(来自列表组件):

export class ListComponent implements OnInit
{
    list: Item[];

    constructor(
        private _router: Router, 
        private _listService: ListService
    ) { }


    getList() 
    {
        this._listService.getList().then(list => this.list = list);
    }

    ngOnInit() 
    {
        this.getList();
    }

}

记录尝试 1:

list 是包含项目列表的变量。在 View 中它正确显示内容。所以我希望记录它并查看其内容。

getList() 
{
    this._listService.getList().then(list => this.list = list);
    console.log(list)
}

但是当我收到此错误时:

EXCEPTION: ReferenceError: list is not defined in [null]

记录尝试 2:

尝试获得正确的语法:

getList() 
{
    this._listService.getList().then(list => this.list = list);
    console.log(this.list)
}

现在没有错误。但在控制台中它显示未定义。 但服务已经被调用了。所以它应该包含内容

问题:

考虑到我正在使用 Angular2 - Ecmascript 2016

记录服务调用的正确语法是什么?

谢谢!

最佳答案

事实上,this.list 是在 then 方法中注册的回调中设置的。所以你应该使用类似的东西:

getList() 
{
  this._listService.getList().then(list => {
    this.list = list;
    console.log(list);
    console.log(this.list);
  });
}

如果您将 console.log(this.list); 放在 Promise 的右侧,结果可能不会出现,因此 this.list 可能不会出现设置...

关于javascript - AngularJs 2 : How to debug a service call?(es6 语法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36011494/

相关文章:

javascript - 请求特定 PHP 函数的问题

javascript - REGEX 用于获取 URL 末尾不带/的 ID

javascript - 如何让 Winston 与 Webpack 一起工作?

AngularJS 2 没有得到响应

angular - 将 matSuffix 内容与 mat-form-field 输入中的文本对齐

javascript - 如何确保内联 jQuery 脚本在 HTML 页面中最后执行?

javascript - 传单删除特定标记

javascript - 元素上的 Angular Watch 显示不起作用

javascript - 使用 AngularJS 工厂在另一个函数中调用一个函数

AngularJS 单元测试基础 : testing for a $q deferred object's resolution and rejection in a service