gpt4 book ai didi

javascript - 完全没有在 Observable 订阅方法中被调用

转载 作者:行者123 更新时间:2023-12-05 00:34:59 26 4
gpt4 key购买 nike

我正在研究 Angular 应用程序,并且正在尝试使用 RxObservable。下面是示例代码。

getMyData(){
console.log('get my account data called');
this.AccountService
.getMyAccountData()
.filter(_res => _res !== null)
.takeUntil(this.ngUnsubscribe)
.subscribe({
next: _response => {console.log('call finished');}
error: error => {
console.log('had an error');
handleHttpError(error);
},
complete: () => {
console.log('account data loaded is being set');
this.accountDataLoaded = true;
}
});
}

现在这是一个 Angular 2 应用程序(单页应用程序)。当我重新加载页面时,上述函数的完整部分被调用并且 this.accountDataLoaded 为真。

但是,如果我移动到其他组件并返回到这个组件,则不会调用完整的组件,并且 accountDataLoaded 保持为假。

我看到控制台上也没有错误,因为我正在记录错误,如您在上面看到的。

我认为该 observable 上的 filter 或 takeUntil 函数会导致这种情况,但我不确定。

最佳答案

如果调用错误,则不会调用 RXjs 行为完成。
在您的情况下,您需要执行以下操作。

  getMyData(){
console.log('get my account data called');
this.AccountService
.getMyAccountData()
.filter(_res => _res !== null)
.takeUntil(this.ngUnsubscribe)
.subscribe({
next: _response => {console.log('call finished');}
error: error => {
console.log('had an error');
handleHttpError(error);
},
complete: () => {
console.log('account data loaded is being set');
this.accountDataLoaded = true;
}
}).add(() => {
//Called when operation is complete (both success and error)
});
}

关于javascript - 完全没有在 Observable 订阅方法中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49743248/

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