Node Js复杂设计原则(承诺,异步/等待)

时间:2019-05-16 07:43:56

标签: node.js async-await project-structure

在我以前的作品中,这对我来说是一个常见的过程,因此我通常以一个非常复杂的用例为例

async function doThis(){
  for (100x) {
     try {
       insertToDatabase()
       await selectAndManipulateData()
       createEmailWorker()
       /** and many more **/
     } catch {
       logToAFile()
     }
  }
}

该代码有效,但是它执行所有操作的功能都很复杂1,我这样做的唯一原因是因为我可以实时验证一个功能是否失败,所以我可以确保另一个功能不会运行,因此不会有任何错误数据。

我想知道的是,定义一个不牺牲数据完整性的项目结构的最佳架构是什么? (或者已经足够好了吗?)

2 个答案:

答案 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)

实际上,我将持久性,操作和电子邮件工作分开。考虑存储数据是一项责任。除此之外,您的修改和电子邮件工作人员应按计划工作。作业触发后,他们应该检查是否有与其职责相关的数据。

另一种方法是使用触发的作业更改这些计划的作业。您可以建立责任链来触发下一个工作,而他们会决定是否工作。