Странное поведение Promise.all - PullRequest
0 голосов
/ 20 апреля 2020

В одном файле с именем SearchBuilder. js У меня есть эта функция (написанная таким образом как чистый тест)

self.validateInputs = async params => {
        const validateDates = async () => {
            const pick_up_date = moment(`${params.pick_up_date} ${params.pick_up_time}`),
                drop_off_date = moment(`${params.drop_off_date} ${params.drop_off_date}`);
                return true;
        };
        const validatePickUpId = async () => {
            return true;
        };
        const validateDropOffId = async () => {
            throw { 'code': 'NOT_FOUND'};
        };

        return Promise.all([
            validateDates,
            validatePickUpId,
            validateDropOffId,
        ]);
    };

В другом файле с именем searchEngine. js У меня есть это:

self.run = async (type, search_inputs, account) => {
        const searchBuilder  = self.getSearchBuilder(type);
        try {
            const isValid = await searchBuilder.validateInputs(search_inputs);
            console.log(isValid);
        } catch (e) {
            console.log('error input validation');
        }

        return search;
    };

Я ошибочно думал, что если какое-либо из обещаний в Promise.all не выполнится, мой код попадет в блок catch. Вместо этого, даже если обещание не выполняется, код внутри улова никогда не выполняется, а внутри isValid я получаю это.

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