簡體   English   中英

在node.js中為async.series定義回調的位置

[英]Where to define callback for async.series in node.js

我想在異步任務完成時調用一個回調。 以下是相同的代碼:

var async = require("async");

function callMeWhenDone(err, result){
    if(err) console.log('Error Occurred');
    console.log('Callback called');
    console.dir(result);
}

function tasks() {
    console.log('Start executing tasks');
    var tasks = [];
    var result = {};

    tasks.push(function(callMeWhenDone) {
        console.log('Getting some data');
        callMeWhenDone(null, result);
    });
    tasks.push(function(callMeWhenDone) {
        console.log('Second function called');
        callMeWhenDone(null, result);
    });

    async.series(tasks, function(err, result){
        console.log('All done');
        callMeWhenDone(err, result);
    });
}

tasks();

在上面的代碼中,異步任務完成后未調用callMeWhenDone回調方法。

我如何在異步任務中調用它。

這是因為您為async任務回調參數指定了相同的名稱callMeWhenDone 給該參數起一個不同的名稱,例如cb ,然后在完成每個任務時都將它們都調用:

function tasks() {
    console.log('Start executing tasks');
    var tasks = [];
    var result = {};

    tasks.push(function(cb) {
        console.log('Getting some data');
        callMeWhenDone(null, result);
        cb(null, result);

    });
    tasks.push(function(cb) {
        console.log('Second function called');
        callMeWhenDone(null, result);
        cb(null, result);
    });

    async.series(tasks, function(err, result){
        console.log('All done');
        callMeWhenDone(err, result);
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM