Node.js 如何在NodeJS http服务器中中止处理请求
我有您的标准回调hellNode.js 如何在NodeJS http服务器中中止处理请求,node.js,Node.js,我有您的标准回调hellhttpserver-like(简化): 据我所知,结束请求的唯一方法是res.end(),这是异步的,因此调用后的东西将运行(据我所知)。有没有办法做一个伪过程。中途退出并中止处理请求,这样我就不会在其他事情上浪费时间?例如,我如何停止在上面的//explode行,而不处理任何其他内容抛出不会跨越范围边界。基本上,我想,我想要返回或者从嵌套回调中中断createServer回调。要做到这一点,唯一的方法是让代码有一个路径,而不是在每一步都有一个以上的语句?比如,水平编码
http
server-like(简化):
据我所知,结束请求的唯一方法是res.end()
,这是异步的,因此调用后的东西将运行(据我所知)。有没有办法做一个伪过程。中途退出并中止处理请求,这样我就不会在其他事情上浪费时间?例如,我如何停止在上面的//explode
行,而不处理任何其他内容<代码>抛出不会跨越范围边界。基本上,我想,我想要返回
或者从嵌套回调中中断createServer
回调。要做到这一点,唯一的方法是让代码有一个路径,而不是在每一步都有一个以上的语句?比如,水平编码,而不是垂直KLOCs
我显然是个疯子
编辑:问这个问题的另一种方式是:是否可以在
//explode C
行中止,不读取更多数据,不处理end
事件,也不处理doMoreSomethings
回调中的更多行(如果有)?我猜后者是不可能的,因为据我所知,doMoreSomethings
运行到完成,包括附加数据和结束事件处理程序,只有这样才能处理队列中的下一个事件(可能是数据事件),此时doMoreSomethings
完成。但我可能遗漏了什么。这个代码是否只是快速通过,调用isIt
和isItReally
,分配事件处理程序,跳出所有回调,createServer
回调完成,然后所有额外的内容(数据/end/等)从事件队列中运行?通常您将使用return
语句。调用return
时,下面的任何代码都不会执行。尽管如此,如果您的函数isIt()
或isItReally()
是异步函数,那么您将遇到麻烦,因为这些函数是以同步方式使用的。通常您将使用return
语句。调用return
时,下面的任何代码都不会执行。尽管如此,如果您的函数isIt()
或isItReally()
是异步函数,那么您将遇到麻烦,因为这些函数是以同步方式使用的。我们需要看到真实的工作代码,而不是这里的伪代码。中止异步操作不是一个通用主题,而是特定于具体操作的。有些可以中止,有些不能。没有通用的答案。这只能在真实代码的确切上下文中得到回答。如果您有一系列操作,您可能希望使用承诺,这样您就可以拒绝承诺,并将其传达回更高的级别,然后再相应地采取行动。我们需要看到真实的、实际的工作代码,而不是您这里的伪代码。中止异步操作不是一个通用主题,而是特定于具体操作的。有些可以中止,有些不能。没有通用的答案。这只能在真实代码的确切上下文中得到回答。如果您有一系列操作,您可能希望使用承诺,这样您就可以拒绝承诺,并将其传达回更高的级别,然后相应地采取行动。
http.createServer((req, res) => {
doSomething(() => {
doMoreSomethings(() => {
if (!isIt())
// explode A
if (!isItReally())
// explode B
req.on('data', (c) => {
if (bad(c))
// explode C
});
req.on('end', () => {
// explode D
});
});
});
};