Реализованы вложенные асинхронные вызовы в node.js - PullRequest
0 голосов
/ 31 мая 2018

Узел нуби тут.После долгих поисков и прочтения множества статей, постов и обсуждений Stackoverflow я остаюсь застрял при реализации вложенных асинхронных вызовов в node.js.Вот сценарий, который я пытаюсь реализовать:

Мой код получает событие для открытия стороннего файла CSV.Как только файл открыт, содержимое должно быть проверено.Если данные действительны, они сохраняются в хранилище данных бэкэнда.Любое исключение из правил проверки должно храниться в отдельном журнале ошибок на серверной части.

Я модульно решил решение в отдельные функции: одна функция для открытия файла, следующая функция для проверки содержимогофайл, следующая функция для сохранения содержимого и, наконец, последняя функция для сохранения возможных ошибок, сгенерированных функцией проверки.

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

Например, мой модуль верхнего уровня выглядит примерно так:

module.exports = {
  openFile: (filePath) => {
    // code to open file and load the content
    readAndParseFile(fileContent, validateAndReturnStatus);
  }
}

function readAndParseFile(fileContent, next) {
  // code to parse file content into rows of data
  next(rows, persistValues);
}

function validateAndReturnStatus(rows, next) {
  // code to validate
  if(valid) {
    persistValues(row, sendResponse);
  }
}

function persistValues(row, next) {
  //code to persist validated data
  next('success');
}

function sendResponse(status) {
  console.log(status);
}

Выше приведеночень упрощенный псевдокод, но я надеюсь, что он иллюстрирует мое намерение.У меня вопрос: какой самый надежный и правильный способ вложить функции, которые неизбежно являются скрытыми, и убедиться, что пакетный процесс ожидает правильного состояния в конце обработки?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...