javascript - 使用异步调用 angular2 分配变量

标签 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);

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

如何确保项目不为空。

最佳答案

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

我要提一下,当然 items 将始终为 null,您可能会更幸运地使用 this.items (尽管不仅仅是在订阅之后)。但是,就 Angular 而言,当您将项目分配给属性时,组件将使用更新的数据重新渲染。

<小时/>

有一些实验性的技术可以让你以同步的方式编写异步代码,await ,但它要求您编写的代码略有不同(主要是将使用 wait 的函数标记为异步)。

关于javascript - 使用异步调用 angular2 分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284153/

相关文章:

javascript - 如何检查网络上的选定文本是否仅由 JavaScript 中的单词组成?

javascript - 基于分隔的结尾过滤字符串数组

c++ - 使用非常量函数参数初始化数组

java - 如何在 Kotlin 中将字符串拆分为数组?

javascript - 你如何重绘从 p5.js javascript 中的类创建的对象

javascript - 如何使用 Jest/React 测试 Router.push

javascript - 无法让 JQuery 回调函数工作

javascript - 无法使用 JavaScript/jQuery 正确验证单选按钮

c++ - 不断收到 C2664 错误 - 无法将参数从 char[10] 转换为 char

Javascript - 按值删除数组项