Node.js 如何在NodeJS http服务器中中止处理请求

Node.js 如何在NodeJS http服务器中中止处理请求,node.js,Node.js,我有您的标准回调hellhttpserver-like(简化): 据我所知,结束请求的唯一方法是res.end(),这是异步的,因此调用后的东西将运行(据我所知)。有没有办法做一个伪过程。中途退出并中止处理请求,这样我就不会在其他事情上浪费时间?例如,我如何停止在上面的//explode行,而不处理任何其他内容抛出不会跨越范围边界。基本上,我想,我想要返回或者从嵌套回调中中断createServer回调。要做到这一点,唯一的方法是让代码有一个路径,而不是在每一步都有一个以上的语句?比如,水平编码

我有您的标准回调hell
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
            });
        });
    });
};