作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Rx.Observable.create()
创建一个异步 observables 数组并希望使用 .toArray()
完成后获取所有值。
console.log('running');
let valsArray = ['a','b','c'].map((val,i)=>{
return Rx.Observable.create((obs)=>{
let tid = setTimeout(()=>{
console.log(val + ' timing out');
obs.onNext(val);
},i*500);
return ()=>{
clearTimeout(tid);
};
}).publish().refCount();
});
Rx.Observable.from(valsArray)
.flatMap((v)=>v)
.toArray()
.subscribe((arr)=>{
console.log("arr should be ['a','b','c']",arr);
});
setTimeout
作为其他异步操作的替代品,以保持示例简单。
最佳答案
代码是正确的,除非您没有完成源可观察对象。toArray()
操作符只能在 observable 完成时工作,而且由于您没有完成 Rx.Observable.create
那么您的查询永远不会结束。
尝试这个:
console.log('running');
let valsArray = ['a','b','c'].map((val,i)=>{
return Rx.Observable.create((obs)=>{
let tid = setTimeout(()=>{
console.log(val + ' timing out');
obs.onNext(val);
obs.onCompleted();
},i*500);
return ()=>{
clearTimeout(tid);
};
}).publish().refCount();
});
Rx.Observable.from(valsArray)
.flatMap((v)=>v)
.toArray()
.subscribe((arr)=>{
console.log("arr should be ['a','b','c']",arr);
});
.publish().refCount()
这里似乎错了。在这段代码中没有必要使源 observables 变热。
关于reactive-programming - RxJS - 如何将 toArray() 与异步 observables 数组一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497017/
我是一名优秀的程序员,十分优秀!