首页 > 解决方案 > 打字稿 - 箭头函数中的更新变量

问题描述

我有这样的功能:

private data: MyCustomDataObject;
private getData(): boolean {
    let val: boolean = true;   // variable declared
    this.service.callMethod().subscribe(data => {
        this.data = data;
        if (data == null) {
            val = false;   // val declared above is not updating
        } 
    });
return val; // this is still true, should be false
}

怎么val不更新了?

标签: javascripttypescript

解决方案


这里发生的事情是subscribe获取您提供的功能,并在某些事件发生时挂起它以备后用。当你传递它时,它实际上并没有运行你的函数。正因为如此,getData函数会继续运行,而不会调用您的回调,因此在返回val之前 never 的值会发生变化。getData如果您希望它返回false,则需要在val传递给的回调之外进行更改subscribe


推荐阅读