例如我有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/