angular - 仅当调用函数内部的回调并执行函数的其余部分时,如何调用另一个函数?
问题描述
我的角度代码
getStatus(transferDTO){
this.queryResourceService.getInventoryStatusIdByStatusNameAndStatusTypeUsingGET(transferDTO).subscribe(
this.save()
);
/*
Remaining code here
*/
this.save()
}
function save() {
}
现在我不想调用 this.save() 两次,我希望仅在执行回调以及执行方法中的剩余代码之后才调用它......当然,我可以解决这个问题跟随
getStatus(transferDTO){
/*
Remaining code here
*/
this.queryResourceService.getInventoryStatusIdByStatusNameAndStatusTypeUsingGET(transferDTO).subscribe(this.save());
}
save(){
}
但我不想延迟回调方法。那么我该如何解决这个问题呢?
解决方案
您可以滥用startWith()
运算符来实现它。从文档
返回一个 Observable,它在开始发射源 Observable 发射的项目之前发射您指定为参数的项目。
尝试以下
import { startWith } from 'rxjs/operators';
getStatus (transferDTO) {
this.queryResourceService.getInventoryStatusIdByStatusNameAndStatusTypeUsingGET(transferDTO)
.pipe(startWith(0))
.subscribe(
response => {
if (response === 0) {
// run some independent code
} else {
// run dependent code
this.save()
}
},
error => { // handle error }
);
}
确保传递给startWith()
的值与源 observable 返回的实际值不同。
推荐阅读
- python - 图像的边缘检测并保存网格的单元格
- r - R :根据 R 中的行仅从每列中选择最大值
- javascript - 根据数字的值更改按钮上的文本 - 使用 Hooks 做出反应
- python - 是否有一个功能可以让我从 Dataframe 中只打印一个值?
- amazon-web-services - aws kinesis 数据分析应用程序 (flink) 更改最初位于 flink-conf.yaml 的属性
- reactjs - reactjs中如何根据onclick改变头像颜色?
- c# - 将数据插入到 C# 中的现有 JSON 数组中
- tensorflow - 如何使用 Tensorflow 将 Python 脚本编译为 .exe 文件,以便在没有 Python 和 Tensorflow 的计算机上使用
- wordpress - 在不同服务器上创建 wordpress 开发站点但在使用域时的最佳方法
- python - 使用 Python 搜索(在文件夹和子文件夹中)并将文件读取到数据框列表中