gpt4 book ai didi

angular - method VS () => method() - Angular 2 done() 回调函数订阅 Observable RxJS

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:17 25 4
gpt4 key购买 nike

我对使用 RxJS 时 subscribe() 方法中的 done 函数有疑问。

我的应用程序有一个代码:

ngOnInit() {
this._dictionaryService.loadDictionary()
.subscribe(
dictionary => this.dictionary = dictionary,
error => this.errorMessage = <any>error,
this.loadQuestion);
}

而且它不起作用。但是如果改变

this.loadQuestion);

() => this.loadQuestion());

它工作正常。

所以,这段代码:

ngOnInit() {
this._dictionaryService.loadDictionary()
.subscribe(
dictionary => this.dictionary = dictionary,
error => this.errorMessage = <any>error,
() => this.loadQuestion());
}

效果很好。

this._dictionaryService.loadDictionary() 从文件中获取 JSON 数据。

this.dictionary 是一个类属性。当我尝试在第一个示例中评估此属性时,我得到一个未定义的。但在 2ns 示例中一切正常。

所以,它有效,但我不明白其中的区别。我不明白为什么 1s 示例不起作用。

有人能给我解释一下吗?

最佳答案

那是因为当您编写 this.loadQuestion 时,您正在传递对函数 loadQuestion 的引用,但您将丢失 this语境。当您使用箭头函数时,this 上下文将被保留。

您还可以编写 this.loadQuestion.bind(this) 来获取 loadQuestion 函数,并将 this 上下文固定为当前上下文。

关于angular - method VS () => method() - Angular 2 done() 回调函数订阅 Observable RxJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41307177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com