Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用异步调用angular2分配变量_Javascript_Arrays - Fatal编程技术网

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调用的构造函数中分配一个变量。如何实现这一点?您能否更详细地告诉我如何使用回调实现这一点。我尝试了多种方法,但根本不起作用。我使用该变量填充一个控件,该控件将作为空值。