Node.js 进行异步调用的Express中间件

Node.js 进行异步调用的Express中间件,node.js,express,analytics,middleware,snowplow,Node.js,Express,Analytics,Middleware,Snowplow,我们有一个NodeJS Express应用程序,我们已经为其实现了自定义分析后端。现在,我们正在决定如何为禁用JS的浏览器(如功能手机)实现跟踪机制 我们正在考虑的一种设计方法是创建一个中间件,它拦截每个请求,从请求/上下文中提取参数并将其发送到后端。这是非常可扩展的,对于像我们这样的定制分析解决方案来说非常有意义 另一种方法是像Google analytics那样创建跟踪像素,然后从中提取数据。但对于定制跟踪解决方案来说,这似乎是一个可伸缩性差得多的解决方案,因为参数和数据结构可能会在任何时候

我们有一个NodeJS Express应用程序,我们已经为其实现了自定义分析后端。现在,我们正在决定如何为禁用JS的浏览器(如功能手机)实现跟踪机制

我们正在考虑的一种设计方法是创建一个中间件,它拦截每个请求,从请求/上下文中提取参数并将其发送到后端。这是非常可扩展的,对于像我们这样的定制分析解决方案来说非常有意义

另一种方法是像Google analytics那样创建跟踪像素,然后从中提取数据。但对于定制跟踪解决方案来说,这似乎是一个可伸缩性差得多的解决方案,因为参数和数据结构可能会在任何时候发生变化或放大,这与遗传算法不同


我的问题是——制作一个发出异步请求的中间件是否有任何负面影响?在创建它的过程中,我们是否需要了解什么,因为对服务器的每个请求都将通过这个中间件?我们的应用程序是一个相当大的应用程序,每分钟的流量为数十万。

只要您保持中间件的异步,并在必要时调用
next()
方法,您就可以了。Express可以处理相当多的负载,前提是为其配置了服务器实例

真正的问题是当您开始使用同步方法时,您可以/应该利用承诺来正确处理它们的解决方案


PROTIP:在中间件/控制器逻辑中尽可能避免嵌套承诺解析。使用诸如BryBooL<代码> Aln()/<代码>方法之类的方法,这样就不会浪费对阻塞请求的处理时间,并且如果必须发出顺序回调,请考虑异步瀑布或异步序列(取决于您选择的承诺库)。这将允许您按顺序运行您的承诺解决方案,如果它们依赖于先前的信息。有助于保持代码干净。

只要您保持中间件异步,并在必要时调用
next()
方法,就可以了。Express可以处理相当多的负载,前提是为其配置了服务器实例

真正的问题是当您开始使用同步方法时,您可以/应该利用承诺来正确处理它们的解决方案


PROTIP:在中间件/控制器逻辑中尽可能避免嵌套承诺解析。使用诸如BryBooL<代码> Aln()/<代码>方法之类的方法,这样就不会浪费对阻塞请求的处理时间,并且如果必须发出顺序回调,请考虑异步瀑布或异步序列(取决于您选择的承诺库)。这将允许您按顺序运行您的承诺解决方案,如果它们依赖于先前的信息。有助于保持代码整洁。

Node.js完全异步,有什么问题?问题可能是如果你做同步的东西,但是当你保持所有东西都是异步的时候,一切都是好的。Node.js是完全异步的。问题是什么?问题可能是如果你做了同步的东西,但是当你保持所有东西都异步的时候,一切都很好。