在我以前的作品中,这对我来说是一个常见的过程,因此我通常以一个非常复杂的用例为例
async function doThis(){
for (100x) {
try {
insertToDatabase()
await selectAndManipulateData()
createEmailWorker()
/** and many more **/
} catch {
logToAFile()
}
}
}
该代码有效,但是它执行所有操作的功能都很复杂1,我这样做的唯一原因是因为我可以实时验证一个功能是否失败,所以我可以确保另一个功能不会运行,因此不会有任何错误数据。
我想知道的是,定义一个不牺牲数据完整性的项目结构的最佳架构是什么? (或者已经足够好了吗?)
答案 0 :(得分:0)
const doThis = async() => {
try {
for (100x) {
await insertToDatabase();
await selectAndManipulateData();
await createEmailWorker();
/** and many more **/
}
}
catch {
await logToAFile();
}
}
执行此操作的最佳方法是,应始终使用await来调用任何函数,并确保使用es6语法,因为它提供了更多功能。您的函数应该始终是异步的。 始终将循环置于try catch中,因为它会给您catch中的任何错误,并会调用特定于函数的函数。
答案 1 :(得分:0)
实际上,我将持久性,操作和电子邮件工作分开。考虑存储数据是一项责任。除此之外,您的修改和电子邮件工作人员应按计划工作。作业触发后,他们应该检查是否有与其职责相关的数据。
另一种方法是使用触发的作业更改这些计划的作业。您可以建立责任链来触发下一个工作,而他们会决定是否工作。