我要从异步方法中调用一个回调方法,然后再由另一个然后是另一个异步方法调用该异步方法。
我尝试使用新的返回Promise.reject(new Error(error)); 但这不起作用。
async function getBookDescription(bookid){
logger.info("Inside getBookDescription");
if(booked){
var getBookDocPromise = promisify(MongoModel.getByBookID);
return await getVaultDocPromise(bookid)
}else{
var getDefaultBookPromise = promisify(MongoModel.getDefaultBookConfigs);
return await getDefaultBookPromise();
}
}
async function getbookdetails(bookid, credentials){
logger.info("Inside getbookdetails");
var errMessage;
try {
try{
var bookdetails = await getBookDescription(bookid);
}catch (error) {
logger.info("error"+JSON.stringify(error));
return Promise.reject(new Error(error));
}
if(bookdetails && bookdetails >0){
logger.info("got the bookdetails");
return bookdetails;
}else{
logger.info("inside error");
errMessage = {
"message": bookDetailsNotFound
}
logger.error(errMessage.message);
return errMessage
}
} catch (error) {
return error
}
}
async function addbooks(req,res){
logger.info("Inside addbooks()");
try {
var result = await getbookdetails(bookId);
return res.status(result.statusCode).send(result.message);
} catch (error) {
logger.info("inside error");
return res.status(error.statusCode).send(error);
}
}
预期->万一getBookDescription中出现错误,应抛出拒绝并调用addbooks catch。
Actual-> UnhandledPromiseRejectionWarning:TypeError:res.status需要代码参数 在ServerResponse.status(/Users/mayank/Documents/work/git/cb-credential-service/node_modules/express/lib/response.js:68:11) 在addCredsToVault(/Users/mayank/Documents/work/git/cb-credential-service/src/app/v2/api/credential-reference-api.js:55:22) 在 在process._tickDomainCallback(内部/进程/next_tick.js:229:7) (节点:25108)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。 (拒绝ID:7) (节点:25108)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。