angular - 如何 forkJoin() void 函数?

标签 angular rxjs observable

例如我有voidFunction1(),voidFunction2(),我想

Observable.forkJoin([voidFunction1(), voidFunction2()]).subscribe() ;

但是这根本不起作用,那么如何转换 void 函数呢?不改变原来的 voidFunction() ?

最佳答案

首先:强烈建议您重构您的 void 函数,除此之外,它是有可能的在流中使用 void-functions,即使它没有任何意义:

在 rxjs 中你唯一能用 void-function 做的是 do 操作符和 defer 操作符:

Rx.Observable.defer(() => {
  voidFunction1();
  voidFunction1();
  return Rx.Observable.of("Done");
})
.subscribe(console.log);

function voidFunction1() {
  console.log("Called VoidFunc");
  // I'm not enjoyed
  // because I'm void!
}
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>


如果您必须使用forkJoin:

const voidWrapper$ = wrapVoid(voidFunc);
const voidWrapper2$ = wrapVoid(voidFunc);

Rx.Observable.forkJoin(voidWrapper$, voidWrapper2$)
.subscribe(console.log);


function wrapVoid(func) {
  return Rx.Observable.defer(() => {
    func();
    return Rx.Observable.of("Done");
  })
}

function voidFunc() {
  console.log("called voidFunc");
  // notn' ho!
}
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

关于angular - 如何 forkJoin() void 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119349/

相关文章:

angular - 如何在显示 Angular 网站之前加载图像

angular - 如何在 Angular 4 中使用提供程序模拟组件? - 单元测试

angular - 在 Angular 中过滤响应对象

javascript - Angular "scheduler.schedule is not a function"使用 observable

Http,使用 rxjs 和 angular2 从服务器获取响应

javascript - promise 的动态顺序执行

Angular ngFor 和 ngClass

typescript - angular2 rxjs 可观察的 forkjoin

javascript - Angular 2 RxJS 过滤器到新的 observable

javascript - Rxjs:将数组字段中的每个元素从对象的可观察对象映射到另一个可观察对象