node.js中代码的执行顺序是什么

时间:2018-02-22 10:38:55

标签: node.js api

我正在尝试从API获取json响应,当我进行该调用时,我必须传递用户ID,我从第一个请求获取然后作为参数传递给第二个请求。

问题是事情正在运行的顺序,这是我不理解的。 谁能向我解释这个概念? 为什么我的第一个api请求不会发生在

之前
  

console.log("we got the id:"+id)

CODE:

  app.get('/users/:name/info', function (req, res) {
     var info= [];
     var id;
     var name = req.params.name;
     console.log("now here: "+name); //that the first console.log I get

    //request to get user id

     var parametros = {search_string:name};
     axo.Users.get(parametros, function(error, response){
          var user;
          console.log("should be here next"); //that is the third                                      
          for(let i = 0; i < response.data.length ; i++)
          {
            user = response.data;
            console.log("id"+user[i].id);
            //that is the fourth console.log
            id = user[i].id;
          }
        });
    //request to get user id

  //request to get user information

  console.log("we got the id:"+id); 
  //this returns undefined /second console.log
   var params = {assigned_to_id:id};
   axo.Features.get(params, function(error, response){
   for(let i = 0; i < response.data.length; i++)
   {
     info = response.data;
   }

      res.contentType('application/json');
      res.send(JSON.stringify(info));
  });
     //res.sendFile(path.join(__dirname + ("/index4-prototype.html")));
  });

4 个答案:

答案 0 :(得分:1)

功能

axo.Users.get

是异步执行的,这意味着它开始执行,其余的代码在该函数完成之前继续执行。

检查以获取更多信息 Async Node.js

答案 1 :(得分:1)

使用异步,等待或使用axios。

答案 2 :(得分:1)

函数在Node.js中异步执行,因此一个函数的执行不会等待另一个函数。

如果你需要它一个接一个地运行,你可以按照你需要的顺序嵌套函数,外部函数在内部函数之前执行。

OR

你可以使用async await

答案 3 :(得分:0)

Get请求以异步方式运行。它不会等待您的Get请求完成。 示例: var fs = require("fs");fs.readFile('input.txt', function (err, data) { if (err){console.log(err.stack);return;} console.log(data.toString()); }); console.log(“程序结束”);`
我们必须使用readFileSync。  有关详细信息

https://blog.risingstack.com/node-hero-async-programming-in-node-js/