node.js的domain异常捕获是否能在异步过程中传递出错的上下文数据到监听器?

发布于 2022-08-29 19:54:26 字数 1340 浏览 13 评论 0

本人新学 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文