【问题标题】:Rx (RxJS) Url BuilderRx (RxJS) 网址生成器
【发布时间】:2015-10-14 20:31:44
【问题描述】:

我正在寻找一种使用带有多个参数的 RxJS 构建 urlStream 的好方法。

var searchStream = new Rx.ReplaySubject(1);
var pageStream = new Rx.ReplaySubject(1);

var urlStream = new Rx.Observable.create((observer) => {
  //What goes here?
  //Should output something like http://apiurl.com?page=page&search=search
});

我的直觉是使用Rx.Observable.merge(searchStream, pageStream);,但是在你这样做之后你不知道哪个是哪个参数。

使用 searchStream 主题,我可以在 searchStream.onNext("my search") 的应用程序中的多个位置使用该主题,并让它触发数据的引用。我见过很多使用一个 url 参数的示例,但还没有看到使用多个输入流的示例。

【问题讨论】:

    标签: javascript system.reactive ecmascript-6 rxjs


    【解决方案1】:

    怎么样:

    var searchStream = ...
    var pageStream = ...
    
    var urlStream = Rx.Observable.combineLatest(searchStream, pageStream, (search, page) => {
      return baseUrl + `?search=${search}&page=${page}`;
    })
    .shareReplay(1);
    

    我建议您在创建流时不要直接使用Subjects。可能触发参数更改的任何东西都可以很容易地包裹在 Observable 中。

    例如,您的搜索可能会附加到某个文本框,其更改事件可能包含在 fromEvent

    //This would create a stream that waits until the user has stopped
    //typing for half a second before sending a request to update.
    var searchStream = Rx.Observable.fromEvent($textbox, 'keyup')
        .map(e => e.target.value)
        .debounce(500);
    

    【讨论】:

    • 你的意思是那些是模板文字而不是字符串?
    猜你喜欢
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多