1
我: 我用Node.js的請求模塊獲得授權令牌:與請求承諾更換節點request.post
工作代碼,而無需承諾
var request = require('request');
var querystring = require('querystring');
var requestOpts = querystring.stringify({
client_id: 'Subtitles',
client_secret: 'X............................s=',
scope: 'http://api.microsofttranslator.com',
grant_type: 'client_credentials'
});
request.post({
encoding: 'utf8',
url: "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13",
body: requestOpts
}, function(err, res, body) { //CALLBACK FUNCTION
var token = JSON.parse(body).access_token;
amkeAsyncCall(token);
});
我想: 獲取該令牌需要一些時間。反過來,我需要從getToken回調makeAsyncCall
。所以我決定使用從here的request-promise
。
問題:請求承諾似乎根本不適用於我。
相同(不工作)代碼的承諾:
var rp = require('request-promise');
var querystring = require('querystring');
var requestOpts = {
encoding: 'utf8',
uri: 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13',
method: 'POST',
body: querystring.stringify({
client_id: 'Subtitles',
client_secret: 'Xv2Oae6Vki4CnYcSF1SxSSBtO1x4rX47zhLUE/OqVds=',
scope: 'http://api.microsofttranslator.com',
grant_type: 'client_credentials'
})
};
rp(requestOpts)
.then(function() {
console.log(console.dir);
})
.catch(function() {
console.log(console.dir);
});
任何承諾庫會做,你不需要一個完整的包。只需使用'bluebird'並執行'Promise.promisify(require(「request」))'就可以了 – 2014-09-24 10:07:22