Я использую Step для управления параллельными запусками. То, что я пытаюсь сделать, это:Nodejs - многократные обратные вызовы
- Прочитайте файл JSON с помощью HTTP (файл в формате JSON содержит массив событий)
- Loop массив событий и получить детали событий, используя HTTP
- Хранить информацию о событии в локальных переменных «событиях»
Что я делаю, как это коснуться:
var events = []; // this is the local variable to hold event details
Step(
\t function getEvents(){
\t \t
\t \t var options = {
\t \t \t host: '95.85.14.142',
\t \t \t port: 80,
\t \t \t path: '/data/IT/config.json',
\t \t \t method: 'GET'
\t \t };
\t \t
\t \t http.request(options,this).end();
\t
\t },
\t function getEventsResponse(res){
\t \t
\t \t if (res.statusCode==200){
\t \t \t \t
\t \t \t res.setEncoding('utf8');
\t \t \t res.on('data',this);
\t \t \t
\t \t }
\t },
\t function getEventDetails(data){
\t \t
\t \t var events = JSON.parse(data).events;
\t \t
\t \t var group = this.group();
\t \t for(e in events){
\t \t \t var event = events[e]; \t
\t \t \t var options = {
\t \t \t \t host: '95.85.14.142',
\t \t \t \t port: 80,
\t \t \t \t path: '/data/IT/events/'+event.code+'.json',
\t \t \t \t method: 'GET'
\t \t \t };
\t \t \t
\t \t \t http.request(options,group()).end();
\t \t
\t \t } \t
\t
\t },
\t function getEventDetailsResponse(err,responses){
\t \t
\t \t // responses = [undefined,undefined,..] ???
\t \t
\t },
\t ...
);
В getEventDetailsResponse Я ожидаю, что массив объектов, но я получаю массив неопределенных переменных:
[неопределенная, неопределенная, ..]
Что я делаю неправильно?
По-прежнему не получается заставить его работать ... – Franz
Возможно, я немного сбил вас с пути. Я отредактирую ответ с рабочей версией вашего скрипта. –