Node.js承诺全部然后不击发

mxg2im7a  于 2023-03-12  发布在  Node.js
关注(0)|答案(1)|浏览(115)

我尝试做一个非常简单的任务使用承诺。我有多个目录,每个目录都有一个content.txt文件在它。我需要找到该文件并返回其网址。一旦所有的网址都返回我想执行一个函数称为'任务结束'。我的代码工作,因为它返回所有的网址,但我不能让我的结束函数火。
这是我的密码

const fs = require("fs");
const glob = require("glob");

function getDirectoryName(dir) {
    return dir;
}

const startDir = getDirectoryName('compliance_finish');

const directoryFiles = fs.readdirSync(`../${startDir}`);

Promise.all(
directoryFiles.map((filename) => {
    return new Promise((resolve, reject) => {  
            let pat2 = ''
            getDirectories = function (src, callback) {
                glob(src + '/**/*', callback);
            };

            getDirectories(`../${startDir}/${filename}/`, function (err, res) {
                if(err){
                    console.log('Error', err);
                }else{
                    for(i=0;i<=res.length-1;i++){
                        if(res[i].includes('content.txt')){
                            pat2 = res[i]
                            console.log(pat2)
                        }
                    }
                }
            })     
    })
})
).then(() => {
    task_ended()
}, () => {
    
})

function task_ended(){
    console.log('finished')
}
1szpjjfi

1szpjjfi1#

缺少Resolve函数。

getDirectories(`../${startDir}/${filename}/`, function (err, res) {
            if(err){
                console.log('Error', err);
                reject(err);
            }else{
                for(i=0;i<=res.length-1;i++){
                    if(res[i].includes('content.txt')){
                        pat2 = res[i]
                        console.log(pat2)
                    }
                }
                resolve("Success");
            }
        })

相关问题