我有这个功能:
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
的输出?
答案 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
}
});