使用highland.js参照原始流数据依次执行异步任务

前期

我有一系列事件:

var eventStream = _([{
  id: 1, foo: 'bar'
}, {
  id: 2, foo: 'baz'
}]);

对于流中的每个事件,我需要加载一个模型实例(我的DAL返回promise),然后在该模型的每个实例上调用一个方法,将原始事件数据中的某些数据作为参数传递。

加载模型实例并不难:

eventStream.map(function(data) {
    return getModelPromise(data.id);
}).map(_).merge(); // result is a stream of model instances

但是一旦有了模型,就无法弄清楚如何在模型上调用方法并传递data.foo给它。基本上,对于每个实例,我需要执行以下操作:

modelInstance.doStuff(data.foo);

我玩过分叉流,在叉子上拉模型,然后使用zipinvoke以不同的组合使用,但是我没有运气。使用异步,我可以通过适当地使用闭包来简单地处理此问题。如何使用highland.js通过流完成此操作?

草兰

最简单的操作可能是包装getModelPromise,以便它以模型和数据作为属性而不是模型返回对对象的promise。

或者,如果您不想使用承诺,则可以在Highland做到:

var modelStream = eventStream.map(function (data) {
    return _(getModelPromise(data.id)).map(function (model) {
        return {data: data, model: model};
    });
}).parallel(10);

// then...
modelStream.map(function (x) {
    x.model.doStuff(x.data.foo);
});

压缩modelStream和观察到的eventStream版本也应该可行,但是我通常更喜欢传递包含所需内容的对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用highland.js参照原始流数据依次执行异步任务

来自分类Dev

使用Highland.js进行异步地图

来自分类Dev

使用highland.js在消费流之前做点什么

来自分类Dev

无法使用streams / highland.js从mongodb中获取数据

来自分类Dev

无法使用streams / highland.js从mongodb中获取数据

来自分类Dev

如何在流编程中使用Highland.js的parallel()实现并行化?

来自分类Dev

Highland.js中的上下文

来自分类Dev

highland.js:地图功能无法正常运行

来自分类Dev

async.applyEachSeries转换为highland.js

来自分类Dev

highland.js:地图功能无法正常运行

来自分类Dev

在异步任务仍在使用时处置流

来自分类Dev

使用 Tornado Web 框架的异步任务执行

来自分类Dev

使用onComplete依次执行Fabric.js动画

来自分类Dev

使用onComplete依次执行Fabric.js动画

来自分类Dev

如何将 Highland 的 wrapCallback 与 n 元函数一起使用?

来自分类Dev

使用接口从onpostexecute的异步任务获取数据

来自分类Dev

使用异步任务读取文件流,而不是无尽的while循环

来自分类Dev

如何使用delay_jobs在Rails中执行异步任务?

来自分类Dev

在容器托管环境中使用Spring异步执行任务

来自分类Dev

异步任务和线程池执行器的使用

来自分类Dev

如何使用异步任务的返回值执行方法?

来自分类Dev

Watch使用缓存的配置流执行Gulp任务

来自分类Dev

无法在 Cloud Foundry 中使用流执行任务

来自分类Dev

使用okhttp发送数据而无需异步任务

来自分类Dev

使用异步任务中的数据更新微调器

来自分类Dev

使用Java SDK检查数据流作业(异步)状态

来自分类Dev

可观察。使用和异步流获取损坏的数据

来自分类Dev

使使用异步/等待的IObservable <T>以原始顺序返回已完成的任务

来自分类Dev

使用异步任务取消任务

Related 相关文章

  1. 1

    使用highland.js参照原始流数据依次执行异步任务

  2. 2

    使用Highland.js进行异步地图

  3. 3

    使用highland.js在消费流之前做点什么

  4. 4

    无法使用streams / highland.js从mongodb中获取数据

  5. 5

    无法使用streams / highland.js从mongodb中获取数据

  6. 6

    如何在流编程中使用Highland.js的parallel()实现并行化?

  7. 7

    Highland.js中的上下文

  8. 8

    highland.js:地图功能无法正常运行

  9. 9

    async.applyEachSeries转换为highland.js

  10. 10

    highland.js:地图功能无法正常运行

  11. 11

    在异步任务仍在使用时处置流

  12. 12

    使用 Tornado Web 框架的异步任务执行

  13. 13

    使用onComplete依次执行Fabric.js动画

  14. 14

    使用onComplete依次执行Fabric.js动画

  15. 15

    如何将 Highland 的 wrapCallback 与 n 元函数一起使用?

  16. 16

    使用接口从onpostexecute的异步任务获取数据

  17. 17

    使用异步任务读取文件流,而不是无尽的while循环

  18. 18

    如何使用delay_jobs在Rails中执行异步任务?

  19. 19

    在容器托管环境中使用Spring异步执行任务

  20. 20

    异步任务和线程池执行器的使用

  21. 21

    如何使用异步任务的返回值执行方法?

  22. 22

    Watch使用缓存的配置流执行Gulp任务

  23. 23

    无法在 Cloud Foundry 中使用流执行任务

  24. 24

    使用okhttp发送数据而无需异步任务

  25. 25

    使用异步任务中的数据更新微调器

  26. 26

    使用Java SDK检查数据流作业(异步)状态

  27. 27

    可观察。使用和异步流获取损坏的数据

  28. 28

    使使用异步/等待的IObservable <T>以原始顺序返回已完成的任务

  29. 29

    使用异步任务取消任务

热门标签

归档