鍍金池/ 問答/HTML/ node.js中函數(shù)嵌套函數(shù)如何返回里面函數(shù)的值

node.js中函數(shù)嵌套函數(shù)如何返回里面函數(shù)的值

function fileStat(filepath) {
    // 獲取文件狀態(tài)
    return fs.stat(filepath, function(err, stats) {
        if (!err && stats.isFile()) {
            return true;
        } else {
            return false;
        }
    });
}

需求:我要通過外面調用fileStat()函數(shù),返回里面的true,有什么辦法嗎?

回答
編輯回答
神曲

fs.stat是異步方法,用return方法是獲取不到回調函數(shù)里的值的。

兩種方案:

使用同步方法fs.statSync

function fileStat(filepath){
    var stats = fs.statSync(filepath);
    return stats.isFile();
}

使用回調callback

function fileStat(filepath, callback) {
    // 獲取文件狀態(tài)
    fs.stat(filepath, function(err, stats) {
        if( err ){
            return false;
        }
        callback( stats.isFile() );
    });
}

fileStat('/var/www/a.txt', function(result){
    if( result ){
        console.log( 'yes' );
    }else{
        console.log( 'no' );
    }
})
2017年3月29日 14:10
編輯回答
陪她鬧

用promise也可以:

function fileStat(filepath) {
  return fs.stat(filepath, function (err, stats) {
    if (!err && stats.isFile()) {
      resolve(true)
    } else {
      resolve(false)
    }
  });
}
fileStat('/xx/xxx/xx.js').then(function(rtn){console.log(rtn)})
2018年2月11日 00:28