这样的代码,按照洋葱模型,感觉打印顺序应该是1-3-4-2,其实结果是:
为什么?
因为中间件没有全部使用async
和await
所以为了保证洋葱模型,我们必须在每个中间件上加上async
和await
,改进以后:
洋葱模型的先决条件:在每个中间件调用下一个中间件的时候(next()
),前面一定要加上await
最后,为什么要保持这个洋葱模型呢?
因为很多时候我们在一个app里面有好多中间件,有些中间件需要依赖其他中间件的结果,那么如果没有洋葱模型就可能会出错
中间件之间的通信可以通过ctx
挂载的方式来进行: