【问题标题】:How to access variable value outside subscribe call back?如何在订阅回调之外访问变量值?
【发布时间】:2018-03-04 05:18:49
【问题描述】:

订阅回调结果后访问zvol_name_array的方法是什么。我在我的 Google 开发工具中看到 this.zvol_name_array 未定义,我知道 vol_list['vol_name'] 中有一些相关数据。

public zvol_name_array: Array<String> = [];
public zvol_object: Array<object> = [];

  ngOnInit() {
    function find_nested_zvol(zvol: any): String {...snip...}
    this.rest.get(this.volume_resource_name , {}).subscribe((res) => {
      for(let zvol_list of res.data) {
        this.zvol_name_array.push(zvol_list['vol_name']);
      }
    });

【问题讨论】:

  • zvol_list 返回值(推送时)应该是一个字符串。现在是字符串吗?但是我看不出有什么问题!它应该按预期工作!
  • 函数find_nested_zvol是怎么使用的?请发布一个可重现的示例。

标签: typescript


【解决方案1】:

将您的代码更改为:

public zvol_name_array: Array<String> = [];
public zvol_object: Array<object> = [];

ngOnInit() {
    function find_nested_zvol(zvol: any): String {...snip...}

    let parentThis = this;
    this.rest.get(this.volume_resource_name , {}).subscribe((res) => {
        for(let zvol_list of res.data) {
            parentThis.zvol_name_array.push(zvol_list['vol_name']);
        }
    });
}

这是因为父作用域 this 被订阅作用域的 this 覆盖了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 2022-09-23
    • 2021-01-01
    • 2012-07-16
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多