node:http.request()在发生错误时的行为

时间:2015-10-22 11:54:33

标签: javascript node.js

我观察到http.request() Node.js API的一些奇怪的行为(至少从我的观点来看)。

  var req = http.request(options, function (res) {
      cb(null, res);
  });

  req.on("error", function (err) {
      cb(err, null);
  });

现在请求由于错误(HPE_INVALID_CONSTANT)而失败,这导致调用错误回调。然而,http.request()的回调也被调用了。

在我看来,如果出现错误,就不会发生这种情况,例如,如果存在(有效)响应则应该没有错误。只应调用其中一个 - 这就是我所期望的。这里调用了它们,这导致我的另外两个程序流被调用了两次......

我是否错过了某些东西,或者其他人看起来也很奇怪?

1 个答案:

答案 0 :(得分:0)

回调实际上是“响应”事件的监听器。因此,如果有响应,它将被调用,即使该响应是否令人满意。

HPE_INVALID_CONSTANT表示响应存在问题,但实际上存在响应,因此将执行回调。