我的异步函数返回Promise.reject
,但调用者无法捕获它。
我正在使用繁琐和快速。
我错了什么?
const connection = require('tedious').Connection;
const Request = require('tedious').Request;
const TYPES = require('tedious').TYPES;
async function doInsertDansok() {
connection.on('connect', (err)=> {
if (err) {
log.error('connection error:', err);
return new Promise.reject(err);
} else {
log.info('connection success');
let request = new Request('SP_TEST_OUTPUT_PARAM 1, @o_retKey OUT, @o_errMsg OUT, @o_retReceiptInfo OUT',
(err, rowCount, rows)=> {
if (err) {
log.error('request error:', err); //<== this log is written.
return new Promise.reject(err);
} else {
log.info(rowCount + " rows(s) returned");
}
});
request.addOutputParameter('o_retKey', TYPES.Int);
request.addOutputParameter('o_errMsg', TYPES.VarChar, {length:100});
request.addOutputParameter('o_retReceiptInfo', TYPES.VarChar, {length:255});
request.on('returnValue', (parameterName, value, metadata) => {
log.info(parameterName + ' = ' + value);
return new Promise.resolve(parameterName, value);
});
connection.callProcedure(request);
}
})
}
exports.insertDansok = function (req, res) {
doInsertDansok()
.then((paramter, value)=> {
log.info('doInsertDansok success');
res.status(200).json({ message: 'insertdansok success.' });
})
.catch((e)=> {
log.error('insertDansok Failed', e); //<== I thought this log be written. But not.
res.status(400).json({ message: 'insertdansok failed.' });
});
我做了错误的 SQL 语句Request
。
我的期望是.catch((e)=>
catchdoInsertDansok
函数的拒绝。但没有。