Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js服务器请求对象在函数中定义时似乎未被隔离_Javascript_Node.js_Callback_Webserver_Isolation - Fatal编程技术网

Javascript Node.js服务器请求对象在函数中定义时似乎未被隔离

Javascript Node.js服务器请求对象在函数中定义时似乎未被隔离,javascript,node.js,callback,webserver,isolation,Javascript,Node.js,Callback,Webserver,Isolation,考虑以下代码: const http = require("http") const port = 8080 let myServer = http.createServer() myServer.listen(port) function serverSetOnFunctionAndDoRequest() { myServer.on("request",(req, res) => { res.writeHead(200)

考虑以下代码:

const http = require("http")

const port = 8080

let myServer = http.createServer()
myServer.listen(port)

function serverSetOnFunctionAndDoRequest() {
  myServer.on("request",(req, res) => {
    res.writeHead(200)
    res.write("OK!")
    res.end()
  })
    
  http.get('http://localhost:' + port)
}

serverSetOnFunctionAndDoRequest()
serverSetOnFunctionAndDoRequest()
// Intentionally twice
我定义了一个服务器并对其执行两个请求。这里的特殊之处在于,
myServer.on(“request”
事件处理程序函数设置在执行请求的函数中(
serversetonfunctionandorrequest
)。 出于某种原因,这对我编写测试很方便。 我原以为每次调用该函数时,都会注册另一个事件处理程序回调并将其隔离。然而,情况似乎恰恰相反。我会在结束后得到
ERR\u STREAM\u WRITE\u
如果我将
myServer.on(“request”
置于
serversetonfunctionandorequest
之外,则不会发生这种情况。我唯一的解释是,这两个请求都使用了相同的
res
实例


那么,为什么会这样?我该如何解决这个问题呢?

这是因为任何请求都只能有一个响应。如果注册两个事件处理程序,第一个会发送响应,这就是预期的结果,第二个响应是意外的,这就是您出现错误的原因