我的proccess
等待函数不等待preProccess
的结束:
我有一个路由类,可以调用控制器
exports.Controller = async function (req, res) {
let callbackPreProccess = await Implementation.preProccess(payload, resolve);
let callbackProccess = await Implementation.proccess(callbackPreProccess, resolve);
res.status(200).json(callbackProccess);
//
export class Implementation{
preProccess(payload: any, resolve: string): Promise<any> {
return new Promise(async (resolve, reject) => {
try {
if (payload.test == true){
logger.info('preProccess OK');
}
//preProccess connect to the DB and get some informations,
//enrich the payload and return
logger.info('preProccess DB access OK');
resolve(payload);
}
catch(error){
throw new Error("Manual Error");
reject(error);
}
};
proccess(payload: any, resolve: string): Promise<any> {
return new Promise(async (resolve, reject) => {
try {
logger.info('proccess OK');
resolve(true);
}
catch(error){
reject(error);
}
};
}
我期望的所有等待功能如何?
info&& 'preProccess OK'
info&& 'preProccess DB access OK'
info&& 'proccess OK'
但请回到我身边
info&& 'preProccess OK'
info&& 'proccess OK'
info&& 'preProccess DB access OK'
即使当我强制抛出错误时,如果期望不运行过程,它们也会运行
info&& 'preProccess OK'
info&& 'proccess OK'
error&& 'Manual error'
但是当我在.then
控制器上使用proccess
时,手动等待preProccess
时,它工作得很好。
答案 0 :(得分:1)
在创建新进程时使用await。
return await new Promise(async (resolve, reject) => {