Обратный вызов Node.js не работает - PullRequest
0 голосов
/ 22 июля 2011

У меня есть два следующих файла Node.js:

//test.js
var hash=require('./hash');
var sys=require('sys');

hash.hash("asdf",function(param){
        sys.puts(param);
});

и

//hash.js:
var exec=require('child_process').exec;
var sys=require('sys');

exports.hash=function(data,callback){
        exec("./a.out "+data,function callback(error,stdout,stderr){
                callback(stdout);
        });
}

Как видите, я пытаюсь сделать stdout доступным в test.js

Проблема в том, что когда я запускаю node test.js, я получаю следующую ошибку:

eamorr@Compaq6000:~/Desktop/simple-hash$ node test.js 

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
RangeError: Maximum call stack size exceeded

У кого-нибудь есть идеи относительно того, что я могу делать неправильно?

Большое спасибо заранее,


Редактировать: решение: переименовать внутренний «обратный вызов» в «обратный вызов2» или что-то еще ... Спасибо Идану К. за указание на это.

1 Ответ

1 голос
/ 22 июля 2011

Когда вы вызываете exec, вы называете то, что должно быть анонимной функцией, callback. Это имя совпадает со вторым аргументом hash, следовательно, рекурсия.

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