node.js的domain异常捕获是否能在异步过程中传递出错的上下文数据到监听器?
本人新学 node.js,遇到一些问题,折腾了很久,没有搞出来。
主要是异常捕获的问题。一般同步的会用 try、catch 来捕获,但是有时候遇到异步回调,这时候 try、catch 就不大管用,查了一些文档和资料,知道有个 domain 能够解决捕获异步异常的方法。尽管能捕获异常,但是不知道怎么把上下文的数据传递到 domain 的监听器里去?希望有人能指点下,不胜感激。
这里是写的代码,异常是由更底层的代码抛上来的,产生异常的时候应该是 res.on('data',func),由于是 node.js 底层代码,我不能进行代码操作,只能想办法在自己这一层异常捕获,但是有些数据,比如 content 方法中的 url 需要遇到异常时,进行对应的操作,所以需要将 url 传递到 on 的侦听器。但是这一步想了很多方法都做不到,希望有人能提供一些建议,或者方向。
//注册一个错误消息器
var d = $domain.create();
d.on("error",function(err){
console.info(err);
});
/**
* 获取请求内容
*/
this.content = function(url, method) {
// 发送请求
var req = http.request(urlInfo, function(res) {
res.setEncoding("utf-8");
var content = "";
res.on('data', function(data) {
content += data;
});
res.on('end', function() {
if (res.statusCode && RES_SUCCESS_CODE === res.statusCode) {
dosomething();
} else {
dootherthing();
}
});
d.add(res);
});
req.end();
}
d.run(onListener);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论