簡體   English   中英

節點請求模塊Http.IncomingMessage不發出事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM