簡體   English   中英

我如何在node.js中將npm請求模塊與bluebird一起使用

[英]How can I use npm request module with bluebird in node.js

webCheck.js

var request = require("request");
var Promise = require("bluebird");



module.exports = {
    check : function(address){
        var length;
        request(address).on('response',function(response){
        response.on('data',function(data){
            length = data.length;
            console.log("in : ",length); //  
        })
    });
    console.log("out : ",length);
    return length;
}
}


main.js

var webCheck = require('./webCheck.js');

    module.exports = {
    run : function(){
        console.log("result : ",webCheck.check("http://localhost:3000/status"));
        ...


終奌站

out :  undefined
result :  undefined
in : 821

我想檢查網站的長度。 但是,檢查網站的功能不是同步的。

我想在請求完成后返回長度。

我能怎么做? 我想使用bluebird模塊。

為了能夠將request模塊與bluebird Promise一起使用, 文檔建議安裝request-promise 因此,在安裝request ,還要npm install request-promise

然后,您必須確保check功能返回此承諾,以便調用方可以等待其結果:

var request = require("request-promise");

module.exports = {
    check : function(address) {
        return request(address)
            .on('response', function(response) {
                return response;
            });
    }
}

最后,main.js中的調用需要等待promise解析,然后才能使用結果:

var webCheck = require('./webCheck.js');

module.exports = {
    run : function() {
        webCheck.check("http://localhost:3000/status").then(function(response) {
            console.log(response);
        });
    }
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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