Запуск процесса node.js шаг за шагом

Я был разработчиком PHP, я пытаюсь написать код, используя node.js для практики. Я запутался в node.js, когда я выполняю свою программу, строка кода переходит на следующую строку.

Это часть моего кода:

//article.js    
var article_model    = require('../models/article_model');
var comment_model    = require('../models/comment_model');

var list_article,list_comment;

app.set('views','./views/article/');
app.set('view engine','ejs'); 

app.get('/list_article',csrfProtection,function(req,res){

 master_model.get_article(req,xparams,function(status,result,total_data){  
     list_article  = result.data;
    });
 console.log(list_article);

 master_model.get_comment(req,xparams,function(status,result,total_data){  
     list_comment  = result.data;
    });
console.log(list_comment);

var params = {  
               title         : "Article List",
               data_article       : list_article,

           };
           res.render('content.ejs',params);
});

а потом

//master_model.js
exports.get_article = function (req,hash, fn) {


     var auths = {
      user : api_server["auth_username"],
      pass : api_server["auth_password"],
    }


    request.get({url:"http://myapi.com/article/latest", auth:auths  } , function(err,httpResponse,body) {  
      if (!err && httpResponse.statusCode == 200) {
        var temp  = JSON.parse(body);

          if (temp.status == 1){
            result_data = {status:1, message : temp.message ,data : temp.data};
            return fn(true,result_data,1);

          }else if(temp.status == 0){
            result_data ={ status:0, message : temp.message};
            return fn(false,result_data,0);
          }

      }else{
        result_data ={ status:0, message : "error, please try again"};
        return fn(false,result_data,0); //something problem to API
      }

    })


};

exports.get_comment = function (req,hash, fn) {


     var auths = {
      user : api_server["auth_username"],
      pass : api_server["auth_password"],
    }


    request.get({url:"http://myapi.com/comment/latest", auth:auths  } , function(err,httpResponse,body) {  
      if (!err && httpResponse.statusCode == 200) {
        var temp  = JSON.parse(body);

          if (temp.status == 1){
            result_data = {status:1, message : temp.message ,data : temp.data};
            return fn(true,result_data,1);

          }else if(temp.status == 0){
            result_data ={ status:0, message : temp.message};
            return fn(false,result_data,0);
          }

      }else{
        result_data ={ status:0, message : "error, please try again"};
        return fn(false,result_data,0); //something problem to API
      }

    })


};

когда я запускаю свой код и открываю браузер, выходные данные остаются пустыми, когда я снова обновляю, мой браузер показывает свои данные (список artcile и список комментариев)

и я смотрю мою консоль, если первый запуск

output : {
     id : 1
     title : title 1..
     ...
     ..
}
undefined

Если я обновлю свой браузер снова, весь вывод будет завершен, чтобы показать (не показывать неопределенный)

Мой вопрос: как заставить мой код запускать процесс шаг за шагом, пока процесс не завершится и не будет доставлен в представления?

Есть проблемы с моим кодом?

Спасибо!

1 ответ

Чтобы правильно ответить на ваш первоначальный вопрос, вы можете пойти шаг за шагом, используя точки останова. В последнем узле 7 и теперь 6 вы можете использовать Chrome Dev Tools для отладки приложения узла. Вам нужно установить несколько точек останова и посмотреть переменные, которые помогут вам понять:

  • порядок исполнения
  • точные значения переменных в ключевые моменты

Я все еще думаю, что разбить большую программу на более мелкие программы было бы полезно и уменьшить количество сюрпризов, но обучение правильной отладке также действительно полезно!

Вы просто запускаете программу с node --inspect index.js, а затем ссылка будет отображаться на консоли, которую вы загружаете в браузере Google Chrome.

Существует более подробное руководство, которое может помочь.

Официальная документация также стоит прочитать.

Другие вопросы по тегам