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模块。
答案 0 :(得分:0)
为了能够将request
模块与bluebird promises一起使用,documentation建议安装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);
});
}
...
}