Обратный вызов создания асинхронной папки никогда не происходит

Я выполняю набор асинхронных операций в следующих

  1. Прочитать файл
  2. Создать папку
  3. Запишите новый файл в эту папку.

Я написал свой код, используя обещание следующим образом.

const readMzFile = (fileName, type) =>
  new Promise((resolve, reject) =>
    fs.readFile(fileName, type, (err, data) => {
      return err ? reject(err) : resolve(data);
    })
  );

const createFolder = folderName =>
  new Promise((resolve, reject) =>
    fs.mkdir(folderName, function(err) {
      return err ? reject(err) : resolve();
    })
  );

const writeMyFile = (filename, type) =>
  new Promise((resolve, reject) =>
    fs.writeFile(filename, type, function(err) {
      return err ? reject(err) : resolve();
    })
  );

и я использую эти функции обещания следующим образом

readMyFile("xxx", "utf8")
  .then(function(data) {
    var generated = anotherFunc(package_data, data);
    var dir = "/home/malintha/test";
    createFolder(dir).then(function() {
      writeMyFile("xxx", generated_source).then(function() {
        console.log("File saved !!");
        res.end();
      });
    });
  })
  .catch(error => console.log("Error: ", error));

Чтение файла и создание папки происходит, но конечный шаг - запись файла не выполняется и кажется, что он застрял после создания папки.

В чем проблема в этом коде?

node.js,es6-promise,

0

Ответов: 1


1 принят

На первый взгляд, обещанные функции не выглядят плохо (хотя, возможно, посмотрите, util.promisify()так что вам не нужно делать это вручную).

По крайней мере, вы не возвращаете обещания правильно, поэтому исключения могут быть скрыты.

Как насчет чего-то подобного?

readMyFile("xxx", "utf8")
  .then(function(data) {
    var generated = anotherFunc(package_data, data);
    var dir = "/home/malintha/test";
    return createFolder(dir)
      .then(() => writeMyFile("xxx", generated))
      .then(() => {
        console.log("File saved !!");
        res.end();
      });
  })
  .catch(error => console.log("Error: ", error));
Node.js, ES6-обещание,
Похожие вопросы