Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步each和foreach函数_Javascript_Node.js_Foreach_Each - Fatal编程技术网

Javascript 异步each和foreach函数

Javascript 异步each和foreach函数,javascript,node.js,foreach,each,Javascript,Node.js,Foreach,Each,我试图使用async的each函数调用abc函数,但遇到了几个问题。代码如下 我在这里使用for循环的原因是,当我尝试使用每个函数时,传递到abc函数的url中的url是数组形式,而不是字符串形式。因此,我想知道是否有其他方法可以在不必添加for循环的情况下清除这个问题 在添加了几个print语句之后,我意识到代码从来不会执行passhttp.get(url[a],newFileLoc,function(error,result){出于某种原因。总是会有一条错误消息“async.each(url

我试图使用async的each函数调用abc函数,但遇到了几个问题。代码如下

  • 我在这里使用for循环的原因是,当我尝试使用每个函数时,传递到abc函数的url中的url是数组形式,而不是字符串形式。因此,我想知道是否有其他方法可以在不必添加for循环的情况下清除这个问题

  • 在添加了几个print语句之后,我意识到代码从来不会执行passhttp.get(url[a],newFileLoc,function(error,result){出于某种原因。总是会有一条错误消息“async.each(url,downloadFile(url,function()){ TypeError:对象#没有方法“each”

  • 所以我想我真正的问题是,代码到底出了什么问题?我尝试使用forEach而不是each,但仍然出现了另一个错误“迭代器(x,函数(err)){ TypeError: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);
      }
    });
    
    var abc=函数(url,cb){
    对于(var a=0;a
    每个
    的签名都是
    每个(arr、迭代器、回调)
    ,但是在
    迭代器
    位置,您直接调用
    abc
    ,它不返回函数

    解决该问题会导致:

    async.each(
        urls,
        abc,
        function(err) {
            if(err){
                console.log(err);
            };
        }
    );
    
    还请注意,尝试调用
    console.log
    会导致IE9及以上版本的脚本崩溃


    …请清理缩进。当开始和结束大括号不遵循一个真正的大括号样式(这是JavaScript的常见样式)时,代码很难阅读.

    如果您不将
    abc
    传递到每个
    中,它怎么可能被调用?对不起,那是个错误。更正了!所以您执行了
    var async=require('async')
    ?如果执行
    console.log(async)
    您认为输出是什么?是的,我在标题中包含了所有模块。代码片段显然是node.js-only,因此
    console.log
    不是问题。