小编Kim*_*mmo的帖子

RxJS Observable:在处理最后一个订阅时执行清理?

在处理RxJS Observable 的最后一次订阅时,执行副作用的最简洁方法是什么?这可能在Observable终止之前发生.

假设我需要一个函数返回一个Observable发出更改资源的函数.我希望在处理完所有订阅后执行清理操作.

var observable = streamResourceChanges(resource);
var subscription1 = observable.subscribe(observer1);
var subscription2 = observable.subscribe(observer2);
// ...
subscription1.dispose();  // Does not perform the cleanup
subscription2.dispose();  // Performs the cleanup
Run Code Online (Sandbox Code Playgroud)

我发现定义订阅处理操作的唯一方法是使用Rx.Observable.create.最后一次处理可以通过共享订阅来处理,例如Observable.prototype.singleInstance().

例如:

function streamResourceChanges(resource) {
    return Rx.Observable.create(function(observer) {
        // Subscribe the observer for resource changes...
        // Return a cleanup function
        return function() {
            // Perform cleanup here...
            console.log("Cleanup performed!");
        };
    }).singleInstance();
}
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来定义订阅处置的副作用,类似于doOnNext,doOnCompleteddoOnError …

javascript reactive-extensions-js rxjs

9
推荐指数
1
解决办法
5591
查看次数

标签 统计

javascript ×1

reactive-extensions-js ×1

rxjs ×1