在if语句中使用child_process.exec的返回值?

时间:2014-07-11 12:26:49

标签: javascript node.js function if-statement asynchronous

我有这个功能:

function checkfType(a,b){
  exec("file '"+a+"'",function(err,stdout,stderr){
    if(stdout.containsString(b)===true){return true}else{return false}
  })
}

但是,如果我在if语句中使用它,如下所示: if(checkfType(".","directory"){},它只是" false"。 我将exec函数测试为非函数并使用它而不是if语句:

exec("file '.'",function(err,stdout,stderr){
  if(stdout.containsString("directory")===true){
    console.log("It works!);
  }else{
    console.log("It doesn't work.";}
});

哪种方法很好。

我被认为exec函数是异步(或类似),这就是我的问题所在。

有没有办法在if语句中使用exec的输出?

1 个答案:

答案 0 :(得分:1)

  

有没有办法在if语句中使用exec的输出?

是,但不是调用它的函数的返回值。

  

我被认为exec函数是异步(或类似),这就是我的问题所在。

右。你的函数需要接受一个回调函数,它会在exec完成时将标志传递给它:

function checkfType(a,b,callback){
  exec("file '"+a+"'",function(err,stdout,stderr){
    callback(stdout.containsString("directory"));
  })
}

用法:

checkfType("whatever", "directory", function(flag) {
  if (flag) {
    // It's a directory
  } else {
    // It isn't
  }
});