2014-02-23 36 views
6

我有一堆長時間運行的數據庫查詢,我需要在呈現節點中的頁面之前完成。每個查詢都需要一些自己的變量。有沒有簡單的方法將變量傳遞給nodejs中的async.parallel()實用程序?Nodejs:將函數特定的變量傳遞給Async.parallel()

async.parallel([ 
    queryX(callback, A1, A2, A3), 
    queryX(callback, B1, B2, B3), 
    queryY(callback, C1, C2, C3), 
    queryY(callback, D1, D2, D3), 
    queryZ(callback, E1, E2, E3), 
    queryZ(callback, F1, F2, F3), 
    ], 
    function(err, results) { /*Do Render Stuff with Results*/} 
); 
+0

號,'async'不具備這個幫手。您可以嘗試使用'.bind()'或類似的部分應用程序方法,但您的回調首先是很奇怪的,並且可能會妨礙使用它們。 – Bergi

回答

0

有一種簡單的方法來傳遞變量中的的NodeJS async.parallel()工具?

不在async本身,你可以寫不過一個小助手功能如下:

function passWithCallbackFirst(fn) { 
    var args = [].slice.call(arguments, 1); 
    return function(cb) { 
     args.unshift(cb); 
     return fn.apply(this, args); 
    }; 
} 

async.parallel([ 
    passWithCallbackFirst(queryX, A1, A2, A3), 
    passWithCallbackFirst(queryX, B1, B2, B3), 
    passWithCallbackFirst(queryY, C1, C2, C3), 
    passWithCallbackFirst(queryY, D1, D2, D3), 
    passWithCallbackFirst(queryZ, E1, E2, E3), 
    passWithCallbackFirst(queryZ, F1, F2, F3), 
], function(err, results) { 
    /*Do Render Stuff with Results*/ 
});