[英]Node request module Http.IncomingMessage not emitting events
根據此鏈接: request-Node
callback參數獲得3個參數:
適用時發生錯誤(通常來自http.ClientRequest對象)http.IncomingMessage對象第三個是響應主體(字符串或緩沖區,或者,如果提供json選項,則為JSON對象)
碼:
var r = require("request");
var options= {
url: "http://www.example.com/"
};
var callback = function (err, res, body) {
if (!err && res.statusCode == 200) {
res.on("data", function(chunk) {
console.log("DATA : "+chunk);
});
res.on("finish", function() {
console.log("FINISHED");
});
console.log(body);
}
};
r(options, callback);
但是在上面的代碼中,只有console.log(body)
有效,事件發射器無效。
另外,如果僅當整個響應可用時才調用回調,那么當我無法流式傳輸第二個參數時,將其作為http.IncomingMessage
(可讀流)作為第二點有什么意義呢?
當您傳遞這樣的回調時, request
為您緩沖整個響應,而這是body
可用的。 因此,這意味着您不會在res
上看到data
和此類事件,因為它們已經由request
。
看起來您正在混合使用兩種不同的方式來使用“請求”模塊。 根據偏好,您可以使用回調方法或流方法。
回調方法涉及傳遞函數以及選項,當接收到所有數據時,它將調用回調函數。
流方法使您可以將偵聽器附加到事件(例如“響應”)。 我猜您是從接收HTTP請求並通過節點服務器發送響應的示例中混入了這段代碼,因為我在請求模塊的文檔中看不到對“數據”和“完成”事件的任何引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.