如何将js回调函数中的数据返回给最外层函数?

我希望在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;

        })


慕容708150
浏览 5387回答 5
5回答

开心每一天1111

1.返回数据受res Event的限制,是一个异步操作。因此不用promise和async await的话是无法实现的。2.这个return是无法直接获取的。退一步,即使获取了也还是在http.get的回调函数里面,无法实现题目要求。

呼如林

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

汪汪一只猫

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

慕雪6442864

可以加个回调函数,调用的时候传进去就行了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){    //你的操作})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript