2014-03-19 92 views
-1

我想對GET操作發出POST請求。使用ExpressJS發出發佈請求

一切正常,但在帖子後我看不到「TOKEN」,我不明白爲什麼。

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: '*****'}); 
    } 
+0

你的問題是不是expressjs,也沒有特別的NodeJS。你的困惑是在javascript中的異步執行工作:http://stackoverflow.com/questions/7104474/how-does-asynchronous-javascript-execution-happen-and-when-not-to-use-return-st –

+0

有一些閱讀材料爲你在這裏學習:http://stackoverflow.com/a/9355795/774086 –

回答

2

console.log(TOKEN)正在request.post之後執行,因此您沒有時間完成請求。這是您提供回調的原因:一個請求完成後將執行的函數。

嘗試將console.log移入回調函數,看看您是否在那裏獲取數據。有許多事情可以閱讀來理解異步編程。例如:

http://callbackhell.com/

http://recurial.com/programming/understanding-callback-functions-in-javascript/

+0

是的,如果我把console.log到它的回調函數,但我希望在回調之外看到TOKEN .. 。:/ – tonymx227

+0

@ tonymx227不可能,因爲它尚未定義。瞭解異步,它應該都變得清晰。 – GiveMeAllYourCats

+0

好吧,也許我可以發送我的帖子不同...? – tonymx227