Асинхронная функция для получения размера каталога (не включая подкаталоги) - PullRequest
0 голосов
/ 09 марта 2020

Мне нужна асинхронная функция getDirSize, которая считает размер переданного каталога (не включая подкаталоги). Пытался использовать Promise.all, но я не могу написать его без ошибок. потратил около 2 часов, и все это застряло: (

import path from 'path';
import _ from 'lodash';
import { promises as fs } from 'fs';

const getDirSize = (directoryPath) => {
    return fs.readdir(directoryPath)
      .then(data => data.map((item) => fs.stat(item))
      .then((data2) => Promise.all(data2)
         .then())

      //_.sumBy(files, 'size'))
}

Jast не знает, как написать Promise.all для подсчета размеров файлов. Должно ли это работать так .then((content) => Promise.all(content). Кто-нибудь может помочь?

Он должен вернуть обещание и работать так:

getDirSize('/usr/local/bin').then(console.log);

1 Ответ

0 голосов
/ 09 марта 2020
const getDirSize = async (directoryPath) => {
  return new Promise( (resolve,reject)=>{
        //counting logic here
        //resolve(datayouwanttopass) under some condition
        //reject(erroryouwanttothrow) under some condition
  } )
}
getDirSize('/usr/local/bin').then( (data)=>{
//handle your data here
})
.catch( (error)=>{
//error handling
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...