dan*_*y74 3 rxjs rxjs5 angular
我想随着时间的推移(每次发射之间间隔一秒钟)发射数组项,并且当所有项目都发射完后,重复一遍又一遍。
我知道该怎么做,但我想知道是否还有比..更简洁的内容。
const MY_ARRAY = ['one','two','three'];
const item$ = Rx.Observable.interval(1000).take(MY_ARRAY.length).repeat().map(x => MY_ARRAY[x]);
item$.subscribe(x => console.log(x));
Run Code Online (Sandbox Code Playgroud)
谢谢
输出是..
“一”
“二”
“三”
“一”
“二”
“三”
等等
编辑:
ATOW,这里的答案总结为..
const ARR = ['one', 'two', 'three'];
// TAKE YOUR PICK THEY ALL DO THE SAME
const item$ = Rx.Observable.interval(1000).map(i => ARR[i % ARR.length]);
// const item$ = Rx.Observable.interval(1000).zip(ARR, (a, x) => x).repeat();
// const item$ = Rx.Observable.interval(1000).zip(ARR).repeat().map(x => x[1]);
// const item$ = Rx.Observable.interval(1000).take(ARR.length).repeat().map(i => ARR[i]);
item$.subscribe((x) => {
console.log(x);
});
Run Code Online (Sandbox Code Playgroud)
Observable.interval(1000).map(i => MY_ARRAY[i % MY_ARRAY.length])
Run Code Online (Sandbox Code Playgroud)
您可以使用zip运算符:
const interval$ = Rx.Observable.interval(1000);
const items$ = Rx.Observable.from([1,2,3]);
const itemsOverTime$ = interval$.zip(items$).repeat();
itemsOverTime$.subscribe(([time, val]) => {
console.log(val);
// 1
// 2
// 3
// 1
// 2
// 3
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
743 次 |
| 最近记录: |