我正在尝试从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")));
});
答案 0 :(得分:1)
答案 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/