Node.js并行异步调用,但具有优先级

恶魔塔

假设我使用Node.js尝试运行两个异步调用以获得一些答案。我知道有一个异步包,您可以在其中传递两个函数和一个可选的回调。

async.parallel([fun1(){callback(null,1);},
fun2(){callback(null,2);}],
function(err, results) {  
});

但是,假设我现在有一个优先级,如果fun1返回一个值,那么我不需要fun2的答案,只有当fun1返回null时,我才等待fun2。所以我不想使用回调函数,因为回调函数等待两个函数完成,并且fun2可能需要很长时间。

现在,我只是通过为两个异步调用创建回调函数来使用一种非常详尽的方法。

function(){
    var theAnswer,FromFun1,FromFun2;
    var reply1,reply2;
    fun1(reply1="answered";FromFun1=1;complete());
    fun2(reply2="answered";FromFun2=2;complete());
   function complete(answer){
      if(reply1=="answered"){
           theAnswer=FromFun1;
      }else if(reply1==null){
           // Don't do anything because fun1 is not finished running. 
       }else if(reply2=="answered"){
           theAnswer=FromFun2;
       }else{
           // Both have no answer, err.
       }
   }
}

有一个更好的方法吗?

Ben

我在这种情况下使用的技巧是在回调的第一个参数中返回“ done”:

async.parallel([
  function(callback){
    callback("done",1);
  },
  function(callback){
    callback(null,2);
  }
], function(err, results) { 
  console.log(err, results);   // done [ 1 ] or done [ 1 , 2 ] 
});

听起来像是黑客,我通常不这样做,但在这种情况下,这种情况很少见,实际上可以使代码保持干净……只是记录下来,以便其他人知道您的意图。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归,Node js和异步调用

来自分类Dev

Node.js杀死异步调用

来自分类Dev

Node.js /使Redis异步调用

来自分类Dev

node.js redis 异步调用

来自分类Dev

node.js中的低优先级作业

来自分类Dev

Node.js:从内部带有异步调用的函数返回值

来自分类Dev

Node.js:从内部带有异步调用的函数返回值

来自分类Dev

Node.js的异步调用和递归

来自分类Dev

AngularJS和Node.js的异步调用

来自分类Dev

API调用的异步并行与node.js中的回调

来自分类Dev

Node.js Express路由命名和排序:如何确定优先级?

来自分类Dev

优先级,如何使用node express js处理xmlhttprequest发布请求

来自分类Dev

为作为Systemd服务运行的Node.js应用设置日志优先级

来自分类Dev

Node.js异步并行-有什么后果?

来自分类Dev

如何在Node.js中通过异步调用重用测试功能?

来自分类Dev

使Node.js退出,无论本地模块异步调用是否挂起

来自分类Dev

Node.js:通过异步调用顺序完全执行Websocket响应

来自分类Dev

使用sequelize对MySQL的Node.js和异步调用阻止了其他用户

来自分类Dev

Node.js 使用 Promise.all 返回异步调用?

来自分类Dev

在node.js中同步调用

来自分类Dev

在node.js中正确放置具有多个异步redis调用的回调

来自分类Dev

在node.js中正确放置具有多个异步redis调用的回调

来自分类Dev

Node.js异步并行递归

来自分类Dev

如何使用Express和Node进行异步调用

来自分类Dev

带有Express异步API调用的Node.JS

来自分类Dev

JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

来自分类Dev

JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

来自分类Dev

具有优先级的RxJava Zip

来自分类Dev

在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

Related 相关文章

  1. 1

    递归,Node js和异步调用

  2. 2

    Node.js杀死异步调用

  3. 3

    Node.js /使Redis异步调用

  4. 4

    node.js redis 异步调用

  5. 5

    node.js中的低优先级作业

  6. 6

    Node.js:从内部带有异步调用的函数返回值

  7. 7

    Node.js:从内部带有异步调用的函数返回值

  8. 8

    Node.js的异步调用和递归

  9. 9

    AngularJS和Node.js的异步调用

  10. 10

    API调用的异步并行与node.js中的回调

  11. 11

    Node.js Express路由命名和排序:如何确定优先级?

  12. 12

    优先级,如何使用node express js处理xmlhttprequest发布请求

  13. 13

    为作为Systemd服务运行的Node.js应用设置日志优先级

  14. 14

    Node.js异步并行-有什么后果?

  15. 15

    如何在Node.js中通过异步调用重用测试功能?

  16. 16

    使Node.js退出,无论本地模块异步调用是否挂起

  17. 17

    Node.js:通过异步调用顺序完全执行Websocket响应

  18. 18

    使用sequelize对MySQL的Node.js和异步调用阻止了其他用户

  19. 19

    Node.js 使用 Promise.all 返回异步调用?

  20. 20

    在node.js中同步调用

  21. 21

    在node.js中正确放置具有多个异步redis调用的回调

  22. 22

    在node.js中正确放置具有多个异步redis调用的回调

  23. 23

    Node.js异步并行递归

  24. 24

    如何使用Express和Node进行异步调用

  25. 25

    带有Express异步API调用的Node.JS

  26. 26

    JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

  27. 27

    JS(node.js)-如果我进行异步调用但不等待其完成,是否可以保证完成执行?

  28. 28

    具有优先级的RxJava Zip

  29. 29

    在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

热门标签

归档