[英]wait for a promise to finish and then execute the next one
我试图在文件系统中执行一些文件的删除,然后在ddbb中完成删除。
我试图首先在文件系统中执行删除,因为我需要咨询 ddbb,然后从 ddbb 中删除。
我正在尝试按如下方式执行它:
public deleteApplicationInFileSystem = (request: any): Promise < void > => {
return new Promise((resolve, reject) => {
this.registryService.deleteApplicationInFileSystem(param1, param2, param3).then(() => {
resolve();
}).catch((err: any) => {
reject(err);
});
})
}
然后我在 deleteApploicationFromDDBB 中调用此方法,如下所示:
public deleteApplication = (request: any, response: Response): void => {
this.deleteApplicationInFileSystem(request).then(() => { //
this.registryService.deleteApplicationVersionInDDBB(parm1, param2, param3).then(() => {
response.status(200).json({
response: "Done."
});
}).catch(err => {
if (err.split(",")[0] === "fieldNotFoundError") {
response.status(404).json({
response: {
errorMessage: 'error 1'
}
});
} else {
response.status(400).json({
response: {
errorMessage: 'error 2'
}
});
}
})
}).catch(err => {
if (err) {
response.status(400).json({
response: 'Error deleting applicaion from the file system'
});
}
})
}
我试图编写一个 async-await 函数,但它不起作用。 我对 Node 很陌生,任何解决这个问题的帮助都会很棒。
干杯
使用 async / await 你可以像这样纠正它:
public async deleteApplicationInFileSystem (request: any): Promise < void > {
// This method must return Promise as well for this to work
return this.registryService.deleteApplicationInFileSystem(param1, param2, param3);
}
public async deleteApplication (request: any, response: Response): Promise < void > {
try {
await this.deleteApplicationInFileSystem(request);
await this.registryService.deleteApplicationVersionInDDBB(param1, param2, param3);
response.status(200).json({ ... });
} catch(error) {
// Handle error
}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.