У меня есть функция Lambda в AWS с использованием Node 8.1, которая инициирует запрос MSSQL (к внешнему серверу, который не находится в aws)
Когда я использую обработчик не async
с не асинхронным кодом(но обратные вызовы) -
exports.handler = (event, context, callback) => {...}
- Все в порядке.
Доказательство: для этого кода, который использует обратные вызовы -
exports.handler = (event, context, callback) => {
sql.connect(config, err => {
if (err) {
callback(err);
} else {
const req = new sql.Request();
req.query(
'select * from img.dbo.images where imageid = 1641',
(error, result) => {
if (error) {
callback(error);
} else {
sql.close();
callback(null, result.recordset);
}
}
);
}
});
};
Я получаю этот ответ:
Однако , если я изменю код на асинхронную версию :
exports.handler = async (event, context, callback) => {
try {
let pool = await sql.connect(config);
let result1 = await pool
.request()
.query('select * from img.dbo.images where imageid = 1641');
callback(null, result1.recordset);
} catch (err) {
callback(err);
}
};
- Я получаю ошибку тайм-аута (уверен, что это связано с невыполнением обещания):
Вопрос
Почему не работает async
версия?как я могу заставить это работать?