使用异步调用angular2分配变量

时间:2017-05-31 11:55:56

标签: javascript arrays

我正在尝试从返回的异步调用中填充项目。

this._service.getAll()
        .subscribe(
            data => {
                this.items = data.map(function (item) {
                    return { a: item.a, b: item.b };
                }, error => console.error('error: ', error))
        });

console.log(items);

作为异步调用,分配不会立即发生,因此我没有获取下一行代码中的项的值,因此console.log(items)打印为null。

如何确保项目不为空。

1 个答案:

答案 0 :(得分:1)

你不能。您必须使用回调内的项目。但是,您可以在回调中使用外部范围内的变量,这就是您可以将它们分配给items的原因。

我想提一下,当然this.items总是为空,你可能会有更多的运气find source_feeds-20170101* -name test.txt -exec ls -ltr {} \; (虽然不是在订阅之后)。但是,就角度而言,当您将项目分配给属性时,将使用更新的数据重新呈现组件。

有一些实验性技术允许您以同步方式编写异步代码await,但它要求您稍微区别地编写代码(主要标记您使用await作为异步的函数)。