代码之家  ›  专栏  ›  技术社区  ›  NeitoFR

为什么我的(try-catch)代码在NodeJS中执行得太快?

  •  0
  • NeitoFR  · 技术社区  · 6 年前

    HTTP GET 调用(使用本机http模块),我尝试 JSON.parse() end 事件被发出。我确信我得到的数据是有效的JSON,但仍然是 JSON.parse 抛出错误。我的记录显示 在应该调用之前调用。

    res.on("end", () => {
      console.log('Req ended message is', body);
    
      try {
        var passport = JSON.parse(body);
      } catch (e) {
        w.info(
         "Cannot parse the response from : " +
         process.env.mongo_api_host +
         " | error  : " +
         e
       );
      }
      callback(passport);
     return;
    });
    

    我的日志显示:

    info: Getting MongoDB passport for model : CESI
    info: Cannot parse the response from : mongo_api | error  : SyntaxError: Unexpected end of JSON input
    info: Req ended message is *long valid JSON data*
    

    "Req ended message is : ... stuff" .

    编辑1:

    即使把 callback(passport)

          res.on("end", () => {
            try {
              console.log("Req ended message is", body);
              var passport = JSON.parse(body);
              //TODO What if you get an array ?
              if (passport._id) delete passport._id;
              callback(passport);
            } catch (e) {
              w.info(
                "Cannot parse the response from : " +
                  process.env.mongo_api_host +
                  " | error  : " +
                  e
              );
            }
            return;
          });
    
    0 回复  |  直到 6 年前