nodejs parallel callback design pattern

后端 未结 6 1889
日久生厌
日久生厌 2020-12-25 10:34

I\'m trying to find a good pattern to execute a bunch of parallel tasks.

Let me define some task to exemplify. Tasks a, b, c, d, e, f, g execute as

6条回答
  •  北荒
    北荒 (楼主)
    2020-12-25 11:01

    What you actually want is a deferred pattern though like futures.

    function defer(f) {
        // create a promise.
        var promise = Futures.promise();
        f(function(err, data) {
            if (err) {
                // break it
                promise.smash(err);
            } else {
                // fulfill it
                promise.fulfill(data);
            }
        });
        return promise;
    }
    var da = defer(a), db = defer(b), dc = defer(c), dd = defer(d), de = defer(e), df = defer(f), dg = defer(g);
    
    // when a and b are fulfilled then call ab
    // ab takes one parameter [ra, rb]
    Futures.join(da, db).when(ab);
    Futures.join(db, dc).when(bc);
    // abc takes one parameter [ra, rb, rc]
    Futures.join(da, db, dc).when(abc);
    Futures.join(db, dd).when(bd);
    Futures.join(db, dc, dd).when(bcd);
    Futures.join(da, df).when(af);
    // where's e ?
    Futures.join(df,dg).when(fg);
    Futures.join(da,db,dc,dd,de,df,dg).fail(function() {
        console.log(":(");
    });
    

提交回复
热议问题