可观察到的-防止onCompleted用于数组

亚历山大·米尔斯

假设我有一个像这样的数组:

const values = [1,2,3];

我从该数组创建一个可观察对象,如下所示:

const obs = Rx.Observable.from(values);

我这样订阅:

obs.subscribe(
    function onNext(result){
        console.log('item =>', result);
    },
    function onError(e){
        console.error(e.stack || e);
    },
    function onCompleted(){
        console.log('observable is completed');
    }
);

我遇到的问题是,如果我像这样将新项目推送到数组中:

setTimeout(function(){   
   values.push(4);
   values.push(5); 
   values.push(6);
}, 3000 );

这些项目(4,5,6)不会显示在subscribe()回调中!

所以我的问题是,我们如何创建一个可观察的数组,该数组可以“保持打开状态”,以便将来将项目推入该数组时,将触发观察者回调?

我为此创建了要点:

https://gist.github.com/ORESoftware/677ad0a3adf41c04a60829921ba4c4c4

这是一个小提琴:

https://jsfiddle.net/mcq40Lmg/

直到

如果您正在寻找通过直接调用推送值的功能,则需要使用Subject<T>

const values = Rx.Observable.Subject();

setTimeout(function(){

   values.onNext(4);
   values.onNext(5); 
   values.onNext(6);

}, 3000 );

使用主题进行常规操作不被认为是一种好习惯,并且违反了Rx的精神。本质上,主题是Rx的可变变量。

您几乎可以从内置运算符中获得所需的任何功能,或创建将现有功能组合在一起的新功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RxJs数组可观察到的数组

可观察到对象数组的映射

防止频繁点击相同的按钮,可观察到的角度

KnockoutJS:可观察到的foreach绑定数组

Mobx可观察到的映射到js数组

在ngrx中可观察到的数组为空

遍历可观察到的击倒属性数组

在表中显示动态可观察到的数组

映射observableArray,其中包含可观察到的平面数组

从数组可观察到在TypeScript中不起作用

RXJS可观察到的转换数组为多个值

HTTP可观察到的响应解析为数组

RxJS将可观察到的内容追加到打字稿中的可观察到的数组列表中

将Asp.Net MVC json结果绑定到敲除.js可观察到的数组

当数组开始为空时,可观察到的数组mobx不会更新

可观察到的数组未显示数组中的所有项

路线守卫不适用于2个可观察到的

模板中的异步管道可观察到的值不适用于单个值

使用if / else语句返回可观察到的值不适用于RxSwift flatMap

打字稿和微风从查询返回可观察到的数组

通过添加,过滤或删除项目来更新可观察到的Rxjs数组

为什么排序给了我随机排序(可观察到的数组)

获取在特定索引处可观察到的数组元素[Typescript]

如何将数据从可观察到的主题推送到组件中的数组?

可观察到的Angular服务返回嵌套数组数据

将可观察到的JSON响应转换为角度(打字稿)对象数组

RxJS groupBy通过ngrx效果可观察到的自定义数组

JSViews可观察到的数组不会在删除/添加和排序时刷新视图

可观察到的Angualar 4-订阅不适用于路线导航,但适用于页面刷新