如何将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;
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
通过
res.on
绑定事件,当 检测到end
事件时触发回调函数。没法同步return 数据的。这样的module.exports=getData
导出结果也没什么意义。1.是否可以在http外声明一个变量?在res end的时候把返回值赋给 这个变量,然后同样在http外return这个变量
2.在res.on事件内return是不会在调用的时候抛到函数的最外层的
可以加个回调函数,调用的时候传进去就行了
1.返回数据受
res Event
的限制,是一个异步操作。因此不用promise
和async await
的话是无法实现的。2.这个
return
是无法直接获取的。退一步,即使获取了也还是在http.get
的回调函数里面,无法实现题目要求。可以尝试使用:https://github.com/ForbesLind...
但是还是推荐使用异步来实现