0

我希望在nodejs中封装一个模块用于返回http请求的数据,基本的结构是这样:

const http=require('http');

function getData(url){
    http.get(url,function(res){
        var body='';
        res.on('data',function(str){
            body+=str;
        });
        res.on('end',function(){
            var result=JSON.parse(body);
            //将result返回到getData外面
        })
    });
}

module.exports=getData;

最后可以通过调用getData函数返回数据。

所以问题是:

1.如果不借助promise和async function的话要怎么实现呢?能实现吗?

2.如果我向下面一样直接返回,那返回值到底去哪里了?能取到吗?

res.on('end',function(){
            var result=JSON.parse(body);
            //将result返回到getData外面
            return result;
        })
coco 36
2018-02-27 提问
5 个回答
0

已采纳

1.返回数据受res Event的限制,是一个异步操作。因此不用promiseasync await的话是无法实现的。

2.这个return是无法直接获取的。退一步,即使获取了也还是在http.get的回调函数里面,无法实现题目要求。

1

可以尝试使用:https://github.com/ForbesLind...
但是还是推荐使用异步来实现

0

通过res.on绑定事件,当 检测到end事件时触发回调函数。没法同步return 数据的。这样的module.exports=getData导出结果也没什么意义。

0

1.是否可以在http外声明一个变量?在res end的时候把返回值赋给 这个变量,然后同样在http外return这个变量
2.在res.on事件内return是不会在调用的时候抛到函数的最外层的

0

可以加个回调函数,调用的时候传进去就行了

function getData(url,callback){
    http.get(url,function(res){
        var body='';
        res.on('data',function(str){
            body+=str;
        });
        res.on('end',function(){
            var result=JSON.parse(body);
            //将result返回到getData外面
            callback && callback(result)
        })
    });
}

//调用
getData(url,function(data){
    //你的操作
})

撰写答案

推广链接