angular - 如何获取订阅之外的价值?
问题描述
我的代码
this.service.getName().subscribe((success: any) => {
if (success) {
for (let i = 0; i < success[i].length; i++) {
if (success[i].data.empid== data) {
this.dataList.push(success[i].name);
}
}
}
});
无法访问this.dataList
外部subscribe
解决方案
您尝试this.dataList
在致电后立即阅读,this.service.getName()
但您遇到了订购问题。考虑以下代码:
this.service.getName().subscribe(() => console.log('A'));
console.log('B')
这将显示B A
,因为调用this.service.getName()
是异步的。
会发生什么:
- 称呼
this.service.getName()
- 称呼
console.log('B')
- 浏览器获取响应
this.service.getName()
并执行() => console.log('A')
因此this.dataList
,当它仍然是空的或undefined
. 您应该在回调中读取它的值:
this.service.getName().subscribe((success: any) => {
if (success) {
for (let i = 0; i < success[i].length; i++) {
if (success[i].data.empid== data) {
this.dataList.push(success[i].name);
}
}
// Here, you can safely read this.dataList
[...]
}
});
推荐阅读
- javascript - 使用jQuery停止点击功能
- c# - MySQL 使用 OR 运算符选择
- laravel - 我想托管我的 laravel 8 项目,当我部署我的项目时,它给了我错误
- r - 使用 purrr 包重命名名称以指定字符开头的列表元素
- python - 将python烧瓶应用程序上下文传递给rq作业的正确方法
- eiffel - 如何使用 EiffelStudio 进行编译?VD43 预编译文件丢失或无法读取 (...)/driver.exe - 外部 C 编译失败
- r - 具有不同值的相似行的平均值并使它们成为一个
- python - Selenium 脚本不一致
- python - 在python数据框中加入一个计数器的字符串
- html - HTML 按钮未出现/元素相互堆叠