2015-10-22 52 views
0

我觀察到一些奇怪的(至少從我的角度來看)http.request()Node.js API的行爲。node:http.request()在發生錯誤時的行爲

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

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

查閱請求失敗由於錯誤(HPE_INVALID_CONSTANT),這將導致錯誤回調的調用。不過http.request()的回調也被調用。

在我看來,這應該不會發生,如果有一個錯誤,就像有一個(有效)響應應該沒有錯誤。其中一個應該被引用 - 這就是我所期望的。在這裏,他們都被稱爲這導致我的進一步編程流程被調用兩次...

我錯過了什麼,或者看起來奇怪的其他人嗎?

+0

http.request() - 是http XMLHttpRequest的對象嗎? – messerbill

+0

@messerbill,不,我在談論Node.js'''http'''api(https://nodejs.org/api/http.html#http_http_request_options_callback) –

+0

哦抱歉沒有注意到標籤.... – messerbill

回答

0

該回調實際上是「響應」事件的偵聽器。因此,即使答案是令人滿意的,如果有答覆,也會被調用。

HPE_INVALID_CONSTANT意味着響應存在問題,但實際上有響應,因此回調將被執行。