Обработка данных функции JavaScript - PullRequest
0 голосов
/ 31 марта 2012

Я новичок в javascript и мне нужно сделать одну маленькую вещь.У меня есть этот код

http.get(options, function(res) {
    res.setEncoding('utf-8')
    res.on('data', function (chunk) {
        var parser = new xml2js.Parser();
        if(chunk.length < 50) {
            console.log('end!');
        } else {
            console.log(chunk);
        }
    });
})

И мне нужно работать с переменной "чанк" в остальной части кода.Как я могу выкинуть его из функции?- Возвращение Stadart здесь, конечно, не сработает.

1 Ответ

3 голосов
/ 31 марта 2012

Вы можете просто установить его как переменную в содержащей области.

var ch;
http.get(options, function(res) {
    res.setEncoding('utf-8')

    res.on('data', function (chunk) {

    var parser = new xml2js.Parser();
    if(chunk.length < 50) {
        ch = chunk;
    } else {
        console.log(chunk);
    }
});

Однако, поскольку chunk обрабатывается асинхронно, из-за запроса AJAX вам, вероятно, было бы лучше продолжить выполнение вашей программы, вызвав метод из вашего обратного вызова.

http.get(options, function(res) {
    res.setEncoding('utf-8')

    res.on('data', function (chunk) {
    var parser = new xml2js.Parser();
    if(chunk.length < 50) {
        doSomethingWithChunk(chunk);
    } else {
        console.log(chunk);
    }
});

function doSomethingWithChunk(chunk) {
    // rest of code here
}

EDIT:

Чтобы установить глобальную переменную в nodejs (это не рекомендуется), тогда вы можете использовать объект global:

GLOBAL.chunk = chunk;

Опять же, в этом нет необходимости, рассмотрите возможность изменения кода, чтобы вам не приходилось использовать глобальные переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...