Javascript 使用ExpressJS发出post请求
我想就GET操作提出一个POST请求 一切正常,但我看不到帖子后面的“令牌”,我不明白为什么Javascript 使用ExpressJS发出post请求,javascript,node.js,express,Javascript,Node.js,Express,我想就GET操作提出一个POST请求 一切正常,但我看不到帖子后面的“令牌”,我不明白为什么 var request = require('request'); exports.getToken = function(req, res){ var postData = { client_id: CLIENT_ID, client_secret: CLIENT_SECRET, grant_t
var request = require('request');
exports.getToken = function(req, res){
var postData = {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
grant_type: 'authorization_code',
redirect_uri: REDIRECT_URI,
code: CODE
}
request.post({
uri:"https://api.instagram.com/oauth/access_token",
form: postData,
followRedirect: true,
maxRedirects: 10
},function(err,res,body){
var data = JSON.parse(body);
TOKEN = data.access_token;
});
console.log(TOKEN);
res.render('index', {title: '*****'});
}
在request.post之后立即执行console.log(令牌),因此您没有给它时间来完成请求。这就是您提供回调的原因:一个在请求完成后将执行的函数
尝试将console.log移动到回调函数中,查看是否正在那里获取数据。要理解异步编程,您可以阅读很多东西。例如:
您的问题不是关于expressjs,也不是特别关于nodejs。您的困惑在于javascript中的异步执行工作:这里有一些阅读材料供您学习:是的,如果我将console.log移动到回调函数中,它就会工作,但我希望看到回调函数外的令牌…:/@tonymx227不可能,因为它尚未定义。了解异步,你就会明白了。好吧,也许我可以用不同的方式发送我的帖子…?tonymx227,这实际上不是你如何发送帖子的问题。在执行post时,会执行一个异步任务,这必然需要一些时间——但当浏览器执行此请求时,javascript会继续执行。这就是为什么您需要提供一个回调函数,当请求完成时,流返回的某个点。