2014-12-09 4 views
1

Я пытаюсь исправить мою программу обхода node.js.Обновление параметров запроса в async.each?

Он является частью этого:

var site = 'http://www.some.com/'; 
var startPath = '/hambaarst-1.aspx?ipp=35'; 
var pageNumArray = [2,3,4,5,6,7,8,9,10,11,12]; 

async.series([ 
    function(callback) { 
    async.each(pageNumArray, function(page, callback) { 
     request(site+startPath, function(err, resp, body){ 
      if(!err && resp.statusCode == 200){ 
       var $ = cheerio.load(body); 
       $('div.Info').find("a").each(function(){ 
        var url = $(this).attr('href'); 
        doctorPageUrlArray.push(url); 
       }); 
      } else { 
       console.log(resp.statusCode); 
      } 
      startPath = startPath.slice(0,11)+page+startPath.slice(-12); // HERE, I am changing start path. 
      callback(); 
     }); 
    }, callback); 
}, 

мне это нужно в цикле 11 раз и каждое изменение времени startPath переменной:

startPath = startPath.slice(0,11)+page+startPath.slice(-12); 

Но вместо этого он просто ползает 11 раз первую страницу: '/hambaarst-1.aspx?ipp=35' ,

Так что, я думаю, из-за узла асинхронный startPath не обновляется.

Как это исправить?

ответ

1
var async  = require('async'); 
var format  = require('request'); 
var format  = require('util').format; 

var site    = 'http://www.some.com'; 
var startPath   = '/hambaarst-%s.aspx?ipp=35'; 
var pageNumArray  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; 
var doctorPageUrlArray = []; 

async.each(pageNumArray, function (page, next) { 
    console.log(format(site + startPath, page)); 

    request(format(site + startPath, page), function (err, res, body) { 
     if (!err && resp.statusCode === 200) { 
      var $ = cheerio.load(body); 

      $('div.Info').find("a").each(function(){ 
       doctorPageUrlArray.push($(this).attr('href')); 
      }); 
     } else { 
      console.log(resp.statusCode); 
     } 

     next(); 
    }); 
}, function (err) { 
    if (err) { 
     return console.log(err); 
    } 

    console.log(doctorPageUrlArray); 
}); 
Смежные вопросы