2017-01-29 2 views
-1

Кто-нибудь делает следующий код без assync? Я бы хотел, чтобы код ниже выполнял проход, чтобы пройти синхронно.Запрос синхронизации узла

var url = 'http://xxxxxx.com/'; 
var cont = 1; 

while(cont != 10){ 

    request(url + cont,function(err, res, html){ 
     var $ = cheerio.load(html); 
     var list = $('li'); 
     list.each(function(idx, el){ 
      var url2 = $(el).children('a').attr('href'); 
      request(url2, function(error, response, body){ 
       //I Want execute this response for continue 
      }); 
     }); 
    }); 
    cont++; 
} 
+1

я думаю liitle больше объяснений требуется о требовании –

+0

Вы не можете сделать синхронные сети в Node.js. Если вы описываете, что вы на самом деле пытаетесь выполнить с помощью кода в словах, мы можем помочь с тем, как вы программируете, используя асинхронные методы в node.js. Ваш текущий код на самом деле ничего не делает с результатом, поэтому мы не можем сказать из этого кода, что вы действительно пытаетесь выполнить. – jfriend00

ответ

0

Попробуйте это, я ожидаю, что запрос вызова будет только на 2 уровне, если вам нужно n уровня, это не должно работать. Тогда нам нужна рекурсия.
Позвольте мне знать, если какой-то вопрос :)

async.times(10, function(n, next) { 
     request(url + cont,function(err, res, html){ 
       var $ = cheerio.load(html); 
       var list = $('li'); 
       async.each(list, function(el, cbk){ 
        var url2 = $(el).children('a').attr('href'); 
        request(url2, function(error, response, body){ 
         //I Want execute this response for continue 
         cbk(err, data); 
        }); 
       }, next); 
      }); 
    }, function(err, users) { 
     //data is 2D array 
     //err is error if any 
    }); 
Смежные вопросы