首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bacon.JS的速率限制

Bacon.JS的速率限制
EN

Stack Overflow用户
提问于 2016-03-07 08:30:27
回答 1查看 78关注 0票数 0

我试图在访问外部API时使用Bacon.JS创建一个速率限制

使用bufferWithCount和bufferingThrottle可以很好地限制速率,但是当所有的东西都被平面图时,我想得到结果,而不是一次映射每一批。

我尝试过onEnd,但它似乎没有触发。

这里有一个小提琴:http://jsfiddle.net/9324jyLr/1/

代码语言:javascript
复制
var stream = new Bacon.Bus();

  stream
    .bufferWithCount(2)
    .bufferingThrottle(1000)
    .flatMap(batch => {
      batch = batch.map(x => x*2); //this should be an async API call returning Bacon.fromPromise(...)
      return Bacon.fromArray(batch);
    })
    // .bufferWithTime(1000)//one thang per interval
    .onValue(val => $('#log').append(val));

  for (var i=0; i<10; i++) {
    stream.push(i);
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 12:32:56

您可以使用fold组合结果,使用.end()使总线结束。

代码语言:javascript
复制
stream
    .bufferWithCount(2)
    .bufferingThrottle(1000)
    .flatMap(batch => {
      batch = batch.map(x => x*2); //this should be an async op
      return Bacon.fromArray(batch);
    })
    .fold([], (arr, val) => { return arr.concat(val) })
    // .bufferWithTime(1000)//one thang per interval
    .onValue(val => $('#log').append(val+"\n"));

  for (var i=0; i<10; i++) {
    stream.push(i);
  }
  stream.end()

http://jsfiddle.net/jdr9wuzy/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35839248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档