打字稿,箭头函数和rxjs中的“ this”问题

时间:2019-10-18 16:28:08

标签: javascript angular typescript rxjs

im试图使用=>推送到rxjs的subsive方法中的一个数组,但是外面的数组变量变成了里面的对象,所以我不能使用.push

id;name;age;1;Alex;22;2;Adam;36;3;Cody;27

如您所见,我在subscribe和函数调用之前添加了日志,这是外部数组,内部是对象

我试图自己解决问题,但我找不到问题所在,我们将提供任何帮助 谢谢

2 个答案:

答案 0 :(得分:3)

您还没有向我们展示log语句所显示的内容,但是如果它们显示的内容有所不同,则会发生的原因是某些内容分配给了this.rows在您订阅之前将其记录到订阅发生之间的时间,例如使用setTimeout的示例:

const foo = {
    example() {
        this.rows = [];
        console.log(1, this.rows);
        setTimeout(() => {
            console.log(2, this.rows);
        }, 100);
    }
};
foo.example();
foo.rows = {};

箭头功能内部的

this与外面的相同,因为箭头功能是这样工作的。因此,如果this.rows正在更改,那是因为某些内容正在更改。

答案 1 :(得分:-1)

这可能是关闭问题。尝试添加

getDeviceState(){
  const _that = this;
  .
  .
  .code...
  _that.rows.push(state);
}