Используя async/await
, который теперь включен в Node.js.
Вы можете сделать что-то вроде ->
sql.connect(config.properties).then(async pool => {
try {
let response = null; //let's set to null, in case it doesn't even get that far
try {
response = await pool.request().execute('stored_proc');
res.send(response);
someFunction(response, null);
} catch (err) {
res.send(err);
someFunction(response, err);
}
} finally {
sql.close();
}
})
Преимущество в том, что мы можем держать закрытие наответ, я также установил его равным нулю, потому что в теории это может даже не дойти до получения ответа.
Что делает async/await
приятным, это то, что вы можете вернуться к мысли вsync
, но код все еще выполняется async
, поэтому все обычные команды try / catch / finally работают так, как вы ожидаете, для циклов работают так, как вы себе представляете и т. д. Просто будьте осторожны с Array.forEach
, и все, что нужнообратные вызовы, так как это может работать не так, как вы ожидаете.