2

async の each 関数を使用して abc 関数を呼び出そうとしていますが、いくつかの問題が発生しています。コードは次のとおりです。

  1. ここで for ループを使用している理由は、各関数を使用しようとしたときに、abc 関数の URL に渡される URL が文字列ではなく配列の形式になっているためです。したがって、for ループを追加せずにこれを解決する他の方法があるかどうか疑問に思っています。

  2. いくつかの print ステートメントを追加した後、何らかの理由でコードが pass http.get(url[a], newFileLoc, function (error, result){ を実行しないことに気付きました。常にエラー メッセージ "async.each(urls, downloadFile (urls, function(){ TypeError: Object # has no method 'each'"

  3. だから私の本当の質問は、コードの何が問題なのですか? each の代わりに forEach を使ってみたのですが、やはり「iterator(x, function (err) { TypeError: undefined is not a function」) というエラーが出ました。

誰か助けてください!!!

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);
  }
});
4

1 に答える 1