Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多异步执行节点_Javascript_Arrays_Node.js_Function_Async Await - Fatal编程技术网

Javascript 多异步执行节点

Javascript 多异步执行节点,javascript,arrays,node.js,function,async-await,Javascript,Arrays,Node.js,Function,Async Await,我已根据建议更新了代码段: const fs=require('fs'); const replaceExt=require('replace-ext'); 函数newFile(){ const directoryFile=fs.readdirSync('./zipped').toString(); const dirarray=directoryFile.split(','); 控制台日志(dirarray); 返回承诺。解决(Dirrarray); //控制台日志(dirarray类型);

我已根据建议更新了代码段:

const fs=require('fs');
const replaceExt=require('replace-ext');
函数newFile(){
const directoryFile=fs.readdirSync('./zipped').toString();
const dirarray=directoryFile.split(',');
控制台日志(dirarray);
返回承诺。解决(Dirrarray);
//控制台日志(dirarray类型);
//log(directoryFile);
}
函数dirArr(dirarray){
dirarray.forEach((directoryFile)=>{
fs.rename('./zipped/'+directoryFile,replaceExt('./zipped/'+directoryFile,.zip'),函数(err){
如果(错误)抛出错误;
console.log(目录文件)
});
})

}
以下是一个使用基于promise版本的
fs
库的实现,该库可作为

require('fs').promises;
我已经编写了两个函数。第一个函数列出目录中的文件,并返回解析为完全限定路径数组的承诺。第二个函数使用新的文件扩展名重命名这些文件,并返回解析为重命名路径数组的承诺

const fsp = require('fs').promises;
const path = require('path');
const replaceExt = require('replace-ext');

// takes an argument that specifies the directory to list
// returns a promise that resolves to a list of files in that directory
function listFiles(dir) {
    // make dir into a fully qualified path
    let fullDir = path.resolve(dir);
    return fsp.readdir(fullDir).then(files => {
        // make into full path
        return files.map(f => {
            return path.join(fullDir, f);
        });
    });
}

// takes an array of filenames and a new file extension
// renames all the files to have the new extension
// returns array of new filenames
async function renameFiles(files, newExt) {
    // build array of renamed filenames
    const  newFiles = files.map(f => {
        return replaceExt(f, newExt);
    });
    for (let i = 0; i < files.length; i++) {
        await fsp.rename(files[i], newFiles[i]);
    }
    return newFiles;
}


// Example usage
listFiles("./zipped").then(files => {
    return renameFiles(files, ".zip");
}).then(newFiles => {
    console.log(newFiles);
}).catch(err => {
    console.log(err);
})
const fsp=require('fs')。承诺;
const path=require('path');
const replaceExt=require('replace-ext');
//接受一个参数,该参数指定要列出的目录
//返回解析为该目录中文件列表的承诺
函数列表文件(dir){
//使dir成为完全限定路径
设fullDir=path.resolve(dir);
返回fsp.readdir(fullDir)。然后(files=>{
//进入完整路径
返回文件.map(f=>{
返回路径join(fullDir,f);
});
});
}
//接受文件名数组和新的文件扩展名
//重命名所有文件,使其具有新的扩展名
//返回新文件名数组
异步函数重命名文件(文件、新文本){
//生成重命名文件名的数组
const newFiles=files.map(f=>{
返回replaceExt(f,newExt);
});
for(设i=0;i{
返回重命名文件(文件“.zip”);
}).then(newFiles=>{
console.log(新文件);
}).catch(错误=>{
控制台日志(err);
})

使用
fs.promises
界面可以使用返回承诺的
fs
函数<代码>异步如果您没有使用承诺,则对您没有好处。当我尝试使用fsPromises时,我收到一个npm错误,表示它不在注册表中。我不知道在fs异步回调中使用它是绝对必要的。由于我无法获得fsp承诺,我还有什么其他选择?Its
const fsp=require('fs')。承诺。都在nodejs文档里。没有新的安装。
两个控制台的日志条目都未定义
您不会从这些函数返回任何值,因此
readDirValue
strArrValue
自然将
未定义
。。。与常规函数一样,如果不返回任何内容,则实际上是在执行
returnundefined
以及
execAsyncTasks().then()??无需调用。既然您没有将函数传递给
。那么
…这正是我想要做的。我会仔细检查一下,看看我的失误在哪里。谢谢你的帮助,我向你保证,它将被用于参考和学习。