1
function DatabaseConnect(req, res) {...}
function CreateNewUser(req, res) {...}

function Go (app, req, res) {

    // If is POST on this URL run this function
    var firstFunction = app.post('/admin/svc/DB', function(res, req) { 
        DatabaseConnect(req, res) 
    });

    // If is POST on this URL run this function
    var secondFunction = app.post('/admin/svc/CREATE', function(res, req) { 
        CreateNewUser(req, res) 
    });

    // Run first all callbacks and after render page
    function Render(firstMe, afterMe) {
        firstMe();
        afterMe();
        app.render('screen');
    }

    Render(firstFunction, secondFunction);

}

Go();   

より多くの関数をasynで実行するにはどうすればよいですか。そしてRender()は結局?

APP.POSTは、そのURIでPOSTされている場合に呼び出されます。

4

1 に答える 1

0

ここには、ニーズに応じてさまざまなアプローチがあります。一定数の非同期関数の完了だけを気にする場合、一般的なパターンの 1 つは、基本的にカウントを維持し、完了afterAll()時にメソッドを起動することです。

var count = 0,
    target = 2; // the number of async functions you're running

function afterAll() {
    if (++count === target) {
        // do something
    }
}

doAsync1(function() {
    // some stuff
    afterAll();
});

doAsync2(function() {
    // some stuff
    afterAll();
});

Underscoreには、次のような便利なユーティリティがいくつか用意されています_.after

var asyncMethods = [doAsync1, doAsync2, doAsync3],
    // set up the callback to only run on invocation #3
    complete = _.after(asyncMethods.length, function() {
        // do stuff
    });
// run all the methods
asyncMethods.forEach(function(method) {
    // this assumes each method takes a callback
    method(complete);
});
于 2012-12-22T23:47:30.113 に答える