Передача переменных в обратные вызовы в Node.js

Я новичок в node и пытаюсь создать что-то, что получит некоторую информацию о сервере. Но вот моя проблема. Я настраиваю объект конфигурации (со временем он будет динамически обновляться в зависимости от происходящих событий), а затем позже, в функции, я пытаюсь получить доступ к значению в этом объекте. (См. Код ниже)

Итак, сначала я настраиваю свои переменные:

var util            = require('util'),
    child           = require('child_process'),
    config          = {};

, которые работают нормально. Затем я загружаю свою конфигурацию:

function loadConfig( )
{
    // Add some code for auto-loading of args
    config = {
        "daemons": [
            ["Apache", "apache2"],
            ["MySQL",  "mysqld"],
            ["SSH", "sshd"]
        ]
    };
}

и инициализирую вызов функции

loadConfig();

После этого я запускаю свою проверку на демонах.

function getDaemonStatus( )
{
    for(var i=0; i<config.daemons.length; i++)
    {

        child.exec( 'ps ax -o \'%c %P\' | awk \'{if (($2 == 1) && ($1 == "\'' +
            config.daemons[i][1] + '\'")) print $0}\'',
            function( error, stdout, stderr )
        {

            console.log(config.daemons[i]);
        });
    }
}

Я получаю такой ответ:

undefined
undefined
undefined

Я действительно не хочу использовать ГЛОБАЛЬНУЮ переменную, так что вы, ребята, можете придумать другой способ решения моей проблемы?

Спасибо! =]

9
задан Daniel Noel-Davies 6 November 2011 в 12:00
поделиться