Ersetzen von Knoten anfordern.post mit Wunsch-Versprechen
Ich habe:
Ich verwendet Node.js Anfrage Modul zu erhalten Berechtigungs-token:
Funktionierenden code ohne Versprechen
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);
});
Ich will:
Es dauert einige Zeit, um das token an. Wiederum muss ich makeAsyncCall
von getToken Rückruf. So dass ich entscheiden, einen request-promise
aus hier.
Problem: Anfrage-Versprechen scheint nicht zu funktionieren für mich.
Die gleiche (nicht funktionierende) code mit dem Versprechen:
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);
});
Alle Versprechen, Bibliothek tun würde, Sie brauchen nicht ein ganzes Paket. Verwenden Sie einfach
bluebird
und tun Promise.promisify(require("request"))
und es würde funktionierenInformationsquelleAutor VB_ | 2014-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich die node.js Paket "unirest".
InformationsquelleAutor Thomas Gravel
Getestet habe ich den code mit der neuesten version von Anfrage-Versprechen (0.3.1) und es funktioniert gut.
Nur der Letzte Teil der Protokollierung in der Konsole nicht korrekt war. Verwendung:
InformationsquelleAutor analog-nico
Hatte ich das gleiche Problem habe ich soeben diese Eigenschaft
headers = { 'Content-Type': 'application/json' };
InformationsquelleAutor user2494388