Ответ 1
Это совершенно неправильно. Вы не можете запустить Promise.all по массиву имен файлов. Вы можете запускать его только в массиве promises.
Также нет необходимости толкать каждый элемент массива по одному в пустой массив, чтобы вернуть этот массив, когда у вас уже есть этот массив.
Вы не можете использовать promises для сравнения двух массивов. Вы можете использовать lodash для сравнения двух массивов в обработчике then
обещания, который разрешает массив.
Если вы хотите получить обещание имен файлов из fs.readdir
, используйте один из следующих модулей:
- https://www.npmjs.com/package/mz
- http://bluebirdjs.com/docs/api/promise.promisifyall.html
- https://www.npmjs.com/package/fs-promise
- https://www.npmjs.com/package/fs-promised
Также не используйте глобальные переменные для всего, потому что у вас будут проблемы с любым concurrency.
Кроме того, читайте о promises. Не понимая, как работает promises, вы не сможете угадать правильный способ их использования. Даже просмотр некоторых примеров рабочих кодов может многое помочь, и есть много вопросов и ответов о переполнении стека около promises:
- обещать вызов отдельно от обещания
- Q Обещание просрочки
- Результат возврата обещаний вместо обещания
- Экспорт модуля из результата обещания
- Что не так с решением обещания?
- Возвращаемое значение в функции из блока обещаний
- Как я могу вернуть статус внутри обещания?
- Должен ли я воздерживаться от асинхронного обращения с обещанием?
- Является ли концепция отложенного/обещания в JavaScript новой или является традиционной частью функционального программирования?
- Как связать эти функции вместе с promises?
- Promise.all в JavaScript: как получить значение разрешения для всех promises?
- Почему Promise.all - undefined
- возвращает значение null из сообщения javascript/get
- Использовать cancel() внутри цепочки, созданной promisifyAll
- Почему можно передать нефункциональный параметр в Promise.then() без возникновения ошибки?
- Внедрить шаблон promises
- Promises и производительность
- Проблема с двумя URL-адресами с promises
- http.request не возвращает данные даже после указания возврата на событие "end"
- async.each не выполняет итерацию при использовании promises
- jQuery jqXHR - отменить прикованные вызовы, вызвать цепочку ошибок
- Правильный способ обработки обещаний и ответа сервера
- Возвращает значение из вызова функции перед выполнением всех операций внутри самой функции?
- Решение setTimeout внутри конечной точки API
- Async ждет функции
- Функция JavaScript, которая возвращает данные вызова AJAX
- try/catch блоки с асинхронным/ожиданием
- jQuery Отложено, не вызвав обратные вызовы/сделанные обратные вызовы
- Возврат данных из ajax приводит к странному объекту
- javascript - Почему существует спецификация для модулей синхронизации и асинхронизации?
- Возвращать данные после успешного успеха ajax