Javascript 使用异步调用angular2分配变量
我正在尝试从返回的异步调用填充项Javascript 使用异步调用angular2分配变量,javascript,arrays,Javascript,Arrays,我正在尝试从返回的异步调用填充项 this._service.getAll() .subscribe( data => { this.items = data.map(function (item) { return { a: item.a, b: item.b }; }, error => console.error('error: ',
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
如何确保项目不为空。您不能。您必须使用回调中的项。但是,您可以在回调中使用外部作用域中的变量,这就是为什么您可以将它们分配给
this.items
当然,items
将始终为空,您可能会更幸运地使用this.items
(尽管不只是在订阅之后)。但是,就角度而言,当您将项指定给特性时,组件将使用更新的数据重新关联
有一些实验性技术允许您以同步方式编写异步代码,但它要求您编写的代码略有不同(主要是将您使用的wait函数标记为异步)。您的console.log在您的服务之前执行。是的,实际发生了。非常感谢。如何使console.log在服务正在工作的视图中调用Yes后执行。但是我想在api调用的构造函数中分配一个变量。如何实现这一点?您能否更详细地告诉我如何使用回调实现这一点。我尝试了多种方法,但根本不起作用。我使用该变量填充一个控件,该控件将作为空值。