Javascript async / Promises, обещание в ожидании, теперь отсутствует) после списка аргументов - PullRequest
0 голосов
/ 31 января 2019

Я продолжаю получать Promise {pending} со следующей заглушкой кода:

const files = require('./controllers/search/files');
console.log(
    (async() => {
        return new Promise((resolve, reject) => {
            resolve(await files.getArray(PATH));
        });
    })()
);

Node.JS постоянно говорит, что я пропускаю) после разрешения (но я не вижу, в чем проблемаЯ использую Express.JS и Node.JS. Я пытаюсь взять имена файлов из каталога и сохранить их внутри массива для дальнейшего использования.

1 Ответ

0 голосов
/ 31 января 2019

Синтаксическая ошибка в том, что await разрешен только внутри async функций, а ((resolve, reject) => { ... } - обычная функция.

Проблема в том, что new Promise является антипаттерном конструкции обещания.Это не нужно, поскольку уже существует обещание (учитывая, что files.getArray(PATH) возвращает обещание).

Другая проблема заключается в том, что async является синтаксическим сахаром для обычной функции, которая возвращает обещание.Невозможно вернуть значение из async IIFE и использовать его синхронно с console.log.

Поскольку верхнего уровня await s пока не поддерживается, код должен бытьзавернутый в async IIFE:

(async() => {
  console.log(await files.getArray(PATH));
})()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...