2013-07-25 3 views
2

Я пытаюсь использовать каждую функцию async для вызова функции abc, и я сталкиваюсь с проблемами пары. Код выглядит следующим образом.async каждый и foreach функции

  1. Причина, почему я использую цикл здесь, потому что, когда я пытался использовать каждую функцию, URL-адрес, который передается в URL функции азбуки в виде массива вместо строки. Поэтому мне интересно, есть ли другой способ очистить это, не добавляя цикл for.

  2. После добавления нескольких инструкций печати я понял, что код никогда не выполняет pass http.get (url [a], newFileLoc, function (error, result) {по какой-то причине. Всегда есть сообщение об ошибке «async. каждый (URLs, DownloadFile (URLs, функция() { TypeError: Объект # не имеет метода «каждый»»

  3. Так что я думаю, мой вопрос в том, что именно не так с кодом я пытался использовать Foreach? вместо каждого, но была иная ошибка ». Итератор (x, function (err) { ТипError: undefined не является функцией».

Кто-то, пожалуйста, помогите!

var abc = function (url, cb) { 
    for (var a = 0; a < url.length; a++){ 
    var index = url[a].lastIndexOf("/") + 1; 
    var filename = url[a].substr(index); 
    var newFileLoc = "./tmp/" + filename; 
    http.get(url[a], newFileLoc, function (error, result) { 
     if (error) { 
     console.error(error); 
     } else { 
     cb(); 
     } 
    }); 
    } 
} 
var urls = ["www.randomurl.random.random/", "www.randomurl.random.random/"]; 

async.each(urls, abc(urls, function(){ 
    console.log('downloaded' + results); 
}), function(err){  
    if(err){ 
    console.log(err); 
    } 
}); 
+0

Как можно было бы вызывать «abc», если вы не передадите его в «каждый»? – Dan455

+0

Извините, это была ошибка. Исправленный! – jensiepoo

+0

Итак, вы сделали «var async = require ('async')'? –

ответ

0

Подпись each является each(arr, iterator, callback), но на iterator месте, вы вызываете abc непосредственно и не возвращает функцию.

исправление этого вопроса приводит к:

async.each(
    urls, 
    abc, 
    function(err) { 
     if(err){ 
      console.log(err); 
     }; 
    } 
); 

отметить также, что пытается вызвать console.log вызывает IE9 и до сбоя сценария.

... и очистить отступы. Код очень трудно прочитать, когда открывающая и закрывающая скобки не соответствуют стилю One True Brace (что является общим для JavaScript).

+1

Фрагмент кода явно node.js-only, поэтому 'console.log' не является проблемой. –

Смежные вопросы