1

我的应用中有一些中间件:

  • loggedInUserHandler:加载当前用户并将其保存在上下文中
  • notificationHandler:从上下文中获取当前用户。然后加载该用户的通知并将它们保存到上下文中。
  • routeHandler:从上下文中获取当前用户和通知,并将其加载到正确的视图中。

基本上,每个中间件都可能依赖于先前的中间件生成并附加到上下文的数据。现在,我只是按正确的顺序加载中间件,如下所示:

app.use(loggedInUserHandler);
app.use(notificationHandler);
app.use(routeHandler);

但是我想知道是否有更好的方法来做到这一点,或者声明每个中间件的依赖关系?然后,如果以错误的顺序调用它们,则会抛出错误或类似的东西。我在 Koa 中找不到太多关于此的信息,所以我想知道是否有合适的方法来做到这一点。有什么建议吗?

4

1 回答 1

0

如果要调用下一个中间件,可以使用 next() 函数。
在koa中,需要异步调用next函数,等待它完成。

例如。

// 1st middleware
app.use(async(a, next) => {
  .
  .
  .

  // Call next middleware and wait for it to complete
  await next()
})

// 2nd middleware
app.use(async(a) => {
  .
  .
})
于 2021-01-16T10:32:22.117 回答