- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
关于 RxJS 中 do
和 finally
之间的区别,我没有看到很好的文档。我的目标是仅当 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
那么你不需要 do
或 finally
。只需在将响应分配给 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/
在 Catalyst我正在尝试转发一个私有(private)行动来做一些工作。这是函数定义: sub get_form :Private :Args(1) { my ($self, $c, $ty
public class SimpleHTTPRequest { String envelope1="" + ""+ ""+ ""+ "ghjghj"+
我有一些返回 Promise 的 JavaScript 函数。我使用 .then 来处理从这些函数返回的数据。但是,下面的代码是否保证了顺序? result2 会在 result 之后处理吗? con
我有这样的类层次结构 public abstract class CalendarEventBase{} public class TrainingEvent : CalendarEventBase{
我有一个问题:我需要创建一个可以从 javascript 调用的网络服务(在 C# 中),该服务返回一个在(它是一个 excel)中生成的文件,并且在 javascript 中返回一个新文件,打开一个
我正在向我的 UITableViewCell 添加自定义按钮。在该按钮的操作中,我想调用 showAlert: 函数并希望在该方法中传递单元格标签。 如何在 showAlert 方法中传递参数:act
我正在尝试推送到 harbor registry 2.2。它与 ssl 一起工作,并且存储在本地安装的 NFS 共享上。我得到的错误是:未经授权访问存储库:测试/ flask ,操作:推送:未经授权访
我正在尝试推送到 harbor registry 2.2。它与 ssl 一起工作,并且存储在本地安装的 NFS 共享上。我得到的错误是:未经授权访问存储库:测试/ flask ,操作:推送:未经授权访
无论我如何尝试编写 Action 测试,这个错误都会困扰我一段时间,它给了我这个: “操作可能没有未定义的“类型”属性。您是否拼错了常量?操作:{}" 但如果我控制台记录我正在尝试测试的操作,它会打印
我是一名优秀的程序员,十分优秀!