我正在尝试从返回的异步调用中填充项目。
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);
作为异步调用,分配不会立即发生,因此我没有在下一行代码中获取 items 中的值,因为 console.log(items) 会打印 null。
如何确保项目不为空。
最佳答案
你不能。您必须使用回调中的项目。但是,您可以在回调内部使用外部范围的变量,这就是为什么您可以将它们分配给 this.items
。
我要提一下,当然 items
将始终为 null,您可能会更幸运地使用 this.items
(尽管不仅仅是在订阅之后)。但是,就 Angular 而言,当您将项目分配给属性时,组件将使用更新的数据重新渲染。
有一些实验性的技术可以让你以同步的方式编写异步代码,await ,但它要求您编写的代码略有不同(主要是将使用 wait 的函数标记为异步)。
关于javascript - 使用异步调用 angular2 分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284153/