javascript 使用Promises复制JS目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用Promises复制JS目录相关的知识,希望对你有一定的参考价值。

// code/promises/exercise/main.js
/*
  List the content of the folder, filter out the files only
  then copy to the output folder.
 */
const fs = require('fs');
const path = require('path');
const util = require('util');
const readFile = util.promisify(fs.readFile);
const writeFile = util.promisify(fs.writeFile);
const readdir = util.promisify(fs.readdir);
const stat = util.promisify(fs.stat);
const mkdir = util.promisify(fs.mkdir);
const outputFolder = './output';

function isFile(f) {
  return stat(f).then(d => d.isFile() ? f : '');
}

function filterFiles(list) {
  return Promise.all(list.map(isFile))
    .then(files => files.filter(v => v));
}

function readWrite(result) {
  const files = result[1];
  return Promise.all(files.map(f => {
    return readFile(f)
    .then(content => writeFile(path.join(outputFolder, f), content));
  }));
}

const getFiles = readdir('./').then(filterFiles);

Promise.all([mkdir(outputFolder), getFiles])
  .then(readWrite)
  .then(_ => console.log('done!'))
  .catch(e => console.log(e));

以上是关于javascript 使用Promises复制JS目录的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.Js 和 Promises,你如何返回一个已经实现的 Promise? [复制]

使用 Node.Js 和 Promises,你如何返回一个已经实现的 Promise? [复制]

javascript 在系列#js #promise中运行Promises

javascript 在系列#js #promise中运行Promises

如何在Node.js中对使用promises和事件发射器的函数进行单元测试?

现代JS中的流程控制:详解Callbacks Promises Async/Await