鍍金池/ 問(wèn)答/HTML/ nodejs中使用stats判斷文件是否為文件夾,將promise的resolv

nodejs中使用stats判斷文件是否為文件夾,將promise的resolve()語(yǔ)句放在判斷語(yǔ)句塊導(dǎo)致程序出錯(cuò);

最近在學(xué)習(xí)koa框架搭建node環(huán)境,寫一個(gè)小案例需求如下:node程序讀取某一路徑,如果是文件夾,則將文件夾名字放入list集合中。程序中使用到了promise來(lái)做異步處理。代碼如下。

const getPath = (fileName) => {
    return new Promise((resolve, reject) => {
        fs.stat(basePath + fileName, (err, stats) => {
            if (err) {
                console.log('讀取文件失敗');
                reject('讀取文件失敗');
                return;
            }
            if (stats.isDirectory()) {
                newFiles.push(fileName);
                console.info(fileName + ' ----------- ' + stats.isDirectory());
                resolve();
            }
        })
    })
}

問(wèn)題描述:

如果讀取的路徑中都是文件夾,程序能正常執(zhí)行;如果出現(xiàn)了非文件夾,則出現(xiàn)異常但是不會(huì)拋錯(cuò)。

嘗試解決方案代碼:

const getPath = (fileName) => {
    return new Promise((resolve, reject) => {
        fs.stat(basePath + fileName, (err, stats) => {
            if (err) {
                console.log('讀取文件失敗');
                reject('讀取文件失敗');
                return;
            }
            if (stats.isDirectory()) {
                newFiles.push(fileName);
                console.info(fileName + ' ----------- ' + stats.isDirectory());
            }
            resolve();
        })
    })
}

這樣程序可以正常執(zhí)行。但是沒(méi)有搞明白其中的原因,麻煩各位高手指導(dǎo)一下。

回答
編輯回答
純妹

上面的寫法,只要stats.isDirectory()返回的是false,也就說(shuō)不是文件夾,你的promise就沒(méi)有resolve,自然會(huì)出現(xiàn)異常。

2017年4月3日 22:46