萌新弱弱的问个问题,关于回调的。爬虫
//爬取到的html源码
var html=''
//b函数处理爬取的源码然后处理返回一个结果
var newHtml=''
app.post('/',function(req,res){
http.get(req.body.url,function(res){
//巴拉巴拉。。这里获取了整个html的源码 html
res.on('end',function(){
//对爬取的结果进行处理
var newHtml=b(html)
})
res.send(newHtml)
})
})
那我怎么才能拿到这个newHtml了,res.send()
啊??
如果可以的话,能说一下原理是什么吗
如果要改进下,比如,可以获取https和http的
//balabala
function getHtml(url){
var html=''
//balabala 判断
http.get(ur;,function(httpRes){
//balabala
httpRes.on('end',function(){
//调用b()加工获取的html
return obj=b(html)
})
})
}
然后在路由里就直接是
//balabala
app.post('/',function(req.res){
var obj=getHtml(req.body.url)
res.send(obj)
})
这样字应该不能获取到修改后的obj吧?
5 回复
把 res.send(newHtml)
放在 on end里面
变量名不要冲突了,内层和外层的res
@imhered 我改了一下,麻烦再看看吧
@DevinXian 我改了一下,麻烦再看看吧
需要使用回调函数了,异步编程基础找点资料看看,不要太多,看完你就明白了;return是同步编程风格,只是内层函数返回,外层并没有返回数据哦