gpt4 book ai didi

angular - 使用 RxJS 可观察对象在可观察对象返回后采取行动时, 'do' 和 'finally' 之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 17:25:13 29 4
gpt4 key购买 nike

关于 RxJS 中 dofinally 之间的区别,我没有看到很好的文档。我的目标是仅当 Observable 返回数据时才采取行动,但看起来它们也会在失败时采取行动。

  • do 说“为可观察对象中的每个元素调用一个 Action 排序并在优雅或异常时调用一个 Action 终止可观察序列。"

observable 可能返回多个元素?

  • finally 说“调用一个源可观察序列终止后的指定操作优雅地或特别地”

我希望有人能解释一下 使用哪种方法或是否有更好的替代方法很重要。

    getData(choice): void {
this.dataService.getTableData(choice, 'mainCalls.php')
.do( () => this.defineWidth() )
.subscribe(tableData => this.tableData = tableData,
err => {
console.log(err);
}
);
}

ngOnInit() {
this.getData('getTableData');
}

defineWidth 是一个函数,它依赖于 Observable 返回的数据。我乐于接受有关替代方法的建议和阅读 Material 来完成我想要的。

最佳答案

do() 为每个正常事件调用并且不修改数据流。它仅用于副作用。

finally() 在最后一个事件之后或在出现错误(如果有)之后调用一次。无论是成功还是失败,它都会被调用一次。

如果 this.defineWidth() 依赖于 this.tableData 那么你不需要 dofinally。只需在将响应分配给 this.tableData 的行之后添加调用:

getData(choice): void {
this.dataService.getTableData(choice, 'mainCalls.php')
.subscribe(tableData => {
this.tableData = tableData;
this.defineWidth();
}),
err => {
console.log(err);
}
);
}

关于angular - 使用 RxJS 可观察对象在可观察对象返回后采取行动时, 'do' 和 'finally' 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837958/

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