新手关于异步回调的一些疑惑
发布于 11 年前 作者 motecshine 4493 次预览 最后一次回复是 11 年前 来自 问答
var http=require('http');
var option={
host:'www.baidu.com',
port:80,
method:'POST'
}
var next=function(chunks){
//发送给 客户端
console.log('next:'+chunks);
}
var req = http.request(option,function(res){
console.log('status:'+res.statusCode);
console.log('headers:'+JSON.stringify(res.headers));
//异步回调
res.on('data',function (chunks){
next(chunks);
});
console.log('是异步吗?');
res.on('end',function(){
});
res.on('error',function(e){
console.log('problem'+ e.message);
});
});
req.end();
\n```
我现在想在外部获取 chunks 的值 就像这样
var d=【chunks 的值】
console.log(d);
该怎么获取呢。7 回复
获取不了
你要获取
chunks的位置是"现在", 而异步回调是在"将来". 你只有在"将来"才能知道chunks的值是什么. 也就是说要使用chunks就在next函数里吧, 或者在next函数里调用别的函数把chunks当参数传过去.@wuliao49 谢谢 ,有点被传统观念的编程思想迷惑了,其实是在回调函数里做将来的事情
@wuliao49 嗯
如果你是被一层一层的回调嵌套搞晕了头,可以试试eventproxy或者是async等解决流程问题的组件(本质依然靠回调),但是nodejs毕竟是非阻塞事件驱动机制的语言,一定要区别于传统线性编程的思想
应该在end事件中才将全部数据返回给客户端吧。例如:
可以了解一下Promise,应该会对楼主有帮助