使用async.parallel时出错

Error while using async.parallel

本文关键字:出错 parallel async 使用      更新时间:2023-09-26

我在node.js中使用async时遇到绑定错误。有问题的代码:

var async = require('async');
var fs = require('fs');
var path = require('path');
function ignoreWhiteSpaceJudge(outDesired, outGenerated){
var contentOutDesired = "";
var contentOutGenerated = "";
async.parallel([
    function(outDesired, callback) {
           console.log(outDesired);
          fs.readFile(outDesired, 'utf8',function(error, data) {
                 if (error) {            
                      return callback(error);
                 } else {
                       contentOutDesired = data;
                      return callback();
                 }       
          });
    },
    function(outGenerated, callback) {
          fs.readFile(outGenerated, 'utf8', function(error, data) {
                 if (error) {            
                      return callback(error);
                 } else {
                       ontentOutGenerated = data;
                       return callback();
                 }       
          });
    }],
    function(error){
        if(error){
            console.log(error);
        }
        else{
            console.log(contentOutDesired);
            console.log(ontentOutGenerated);
        }
    });
 }

var pathToOutDesired = path.normalize('/home/repos/gabbar/testcases/outputs/output_1_1.out');
var pathToOutGenerated = path.normalize('/home/repos/gabbar/testcases/outputs/output_1_2.out');
ignoreWhiteSpaceJudge(pathToOutDesired, pathToOutGenerated);

我得到的错误看起来像这样:

 [Function]
 fs.js:423
    binding.open(pathModule._makeLong(path),
            ^
 TypeError: path must be a string
       at Object.fs.open (fs.js:423:11)
       at Object.fs.readFile (fs.js:206:6)
       at async.parallel.fs.readFile.ontentOutGenerated          (/home/repos/gabbar/validation/ignoreWhiteSpaceJudge.js:17:18)
at /home/repos/gabbar/node_modules/async/lib/async.js:570:21
at /home/repos/gabbar/node_modules/async/lib/async.js:249:17
at /home/repos/gabbar/node_modules/async/lib/async.js:125:13
at Array.forEach (native)
at _each (/home/repos/gabbar/node_modules/async/lib/async.js:46:24)
at async.each (/home/repos/gabbar/node_modules/async/lib/async.js:124:9)
at _asyncMap (/home/repos/gabbar/node_modules/async/lib/async.js:248:13)

我对node.js还比较陌生,第一次尝试使用async模块。有人能在这方面帮我吗?

您正在使用parallel的回调函数覆盖路径。

只需从函数中删除第一个参数,即回调而非数据:

function(callback) {
       console.log(outDesired);
      fs.readFile(outDesired, 'utf8',function(error, data) {
             if (error) {            
                  return callback(error);
             } else {
                   contentOutDesired = data;
                  return callback();
             }       
      });
},
function(callback) {
      fs.readFile(outGenerated, 'utf8', function(error, data) {
             if (error) {            
                  return callback(error);
             } else {
                   ontentOutGenerated = data;
                   return callback();
             }       
      });
}