为什么此对象中的变量不是由其回调函数修改的?

时间:2017-08-01 15:33:54

标签: javascript jquery callback

我正在尝试获取一个全局对象来修改由其自己的方法之一初始化的回调函数中的一个自己的变量。回调似乎有效,但在测试全局变量时似乎没有修改变量。

为什么全局对象没有被修改?对全局对象的更改是否保留在某种暂存区域中,等待回调函数完成?

.then((authState) => {...

1 个答案:

答案 0 :(得分:4)

问题在于setTimeout创建了自己的this。解决方案可能如下所示:

start_timer(ptr_callback_function) {
    // savig this that your need
    const self = this;

    setTimeout(function() {
        // use needed context
        self.timer_finished = true;
        ptr_callback_function();
    }, 1000);
}

另一种选择是使用箭头功能:

start_timer(ptr_callback_function) {
    setTimeout(() => {
        this.timer_finished = true;
        ptr_callback_function();
    }, 1000);
}