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 funktionieren

InformationsquelleAutor VB_ | 2014-09-24

Schreibe einen Kommentar