Rxjs:轮询数据直到满足谓词
Rxjs: Poll data until predicate is met
import {Observable} from '@reactivex/rxjs'
// This is a fake API polling, this data is in reality coming from
// the server
const fakePoll$ = Observable.from([
{
status: 'initialized',
data: {...},
},
{
status: 'progress',
data: {...},
},
{
status: 'progress',
data: {...},
},
{
status: 'progress',
data: {...},
},
{
status: 'completed',
data: {...},
},
...
{
status: 'completed',
data: {...},
},
])
fakePoll$
.takeWhile(x => x.status != 'completed')
.subscribe(x => console.log(x))
这个代码片段返回所有的进度和初始化状态:
initialized
progress
progress
progress
但我需要得到第一个完成也像一个takeWhile但包括。
如果需要的话,可以考虑像这样重新添加:
Rx.Observable.concat(fakePoll$
.takeWhile(x => x != 'completed'), Rx.Observable.from('completed'))
.subscribe(x => console.log(x))
我相信你必须使用重复时使用api假设它是一个承诺返回调用。我在
中做了这个服务器轮询//代码在这里
angular.module('rxApp', ['rx'])
.controller('AppCtrl', function($scope, $http, rx) {
function getRandom(){
return Math.floor(Math.random() * (10 - 1)) + 1;
}
function getResults(){
console.log("returning promise");
return $http({
url: "https://en.wikipedia.org/w/api.php?&callback=JSON_CALLBACK",
method: "jsonp",
params: {
action: "opensearch",
search: 'eclipse',
format: "json"
}
});
}
var toBeRepeated = rx.Observable
.fromPromise(getResults).repeat()
.map(response => { console.log(response); return response.data[1]; })
.map(results => {
var rs = results[getRandom()];
console.log(rs);
return rs;
});
var source = toBeRepeated.takeWhile(rs => rs.indexOf('play') === -1);
source.subscribe(function(item){
console.log("item:"+ item);
},err => { console.log(err); },completed => {console.log("completed :" + completed);} );
});
相关文章:
- 附加“;显示更多“;仅当满足设定的字符数时,链接到截断的段落
- 当满足PHP条件时显示一个弹出窗口
- 如果满足某些条件,我如何才能创建一个只有值的对象
- 从Javascript中谓词的数组中获取对象
- 从json数组中查找满足条件的特定元素的值
- 如果满足某些条件,如何在不调用模态的情况下首先调用类
- 多次调用promise函数,直到另一个promise函数满足条件
- Npm未满足对等依赖关系
- 在经过一段时间或满足条件后运行代码
- 在谷歌应用程序脚本中,如何在满足条件的情况下只发送一次电子邮件
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- 禁用超链接,直到 JSP 中满足条件
- Javascript/C# - 满足语句条件时的确认对话框
- PEGJS:为谓词第一语法生成 AST
- 如何在重复满足条件时调用一次辅助函数
- 如何生成一个条件提示,该提示将继续提示,直到满足条件为止
- resize中的条件语句不会在每次满足条件时触发
- npm依赖项未得到满足(即使它们应该得到满足?)
- 如果不满足条件语句,则触发引导模式
- Rxjs:轮询数据直到满足谓词