我观察到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()
的回调也被调用了。
在我看来,如果出现错误,就不会发生这种情况,例如,如果存在(有效)响应则应该没有错误。只应调用其中一个 - 这就是我所期望的。这里调用了它们,这导致我的另外两个程序流被调用了两次......
我是否错过了某些东西,或者其他人看起来也很奇怪?
答案 0 :(得分:0)
回调实际上是“响应”事件的监听器。因此,如果有响应,它将被调用,即使该响应是否令人满意。
HPE_INVALID_CONSTANT
表示响应存在问题,但实际上存在响应,因此将执行回调。