Проблемы с промисами и подключением
В этом коде Node.js ожидается, что промис будет ждать завершения функции findUser, что это не так. Проблема связана с асинхронным выполнением запросов к базе данных.
Функция обратного вызова соединения
В findUser соединение с базой данных устанавливается с помощью Pool.getConnection. Эта функция принимает в качестве аргумента функцию обратного вызова, которая вызывается, когда соединение готово. Однако код неправильно возвращает данные в этом обратном вызове, что приводит к возврату неопределенного значения до завершения запроса.
Чтобы решить эту проблему, функция findUser должна передать обратный вызов в Pool.getConnection, который разрешает или отклоняет обещание, указывает, был ли запрос успешным или нет.
Цепочка промисов
Использование промисов позволяет кодировать выполняться последовательно. В предоставленном коде первое обещание должно быть связано со следующим обещанием, используя then вместо функций обратного вызова, как показано ниже:
promise.then(function(rows) { return new Promise(function (resolve, reject) { loginC.doSomething(data); if (success) { resolve(data); } else { reject(reason); } }); }, function(reason) { console.log("error handler second"); });
Обработка ошибок
Причина вывода сообщения «второй обработчик ошибок» заключается в том, что ошибка возникает при сбое соединения с базой данных. Обработка ошибок в прослушивателе событий Connection.on('error') используется неправильно. Эта ошибка передается функции findUser и фиксируется вторым обработчиком ошибок в цепочке.
Функция findUser должна отклонить обещание с сообщением об ошибке, которое затем будет передано обработчику ошибок в цепочке обещаний. .
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3