Сохраните данные из REST POST в Node - PullRequest
0 голосов
/ 18 мая 2018

Я хочу иметь возможность сохранять различные вызовы API, которые я выполняю, в функции, чтобы я мог вызывать эти функции для получения нужных мне данных.Вот код, который у меня был в Node.js:

"use strict";

var rp = require('request-promise');

function getAccessToken() {
  return new Promise((resolve, reject) => {
    var options = {
        method: 'POST',
        uri: 'some_uri',
        body: {
           "username": "username",
           "password": "password"
        },
        json: true // Automatically stringifies the body to JSON
    };
    rp(options)
        .then(function (parsedBody) {
             resolve(parsedBody.accessToken);
        })
        .catch(function (err) {
             reject(err);
        });
     }
)}

Есть ли какой-нибудь способ для меня, чтобы в основном сохранить данные из этой функции в переменную?Вместо того, чтобы вернуть обещание, могу ли я вернуть что-то еще и быть в состоянии сделать

var token = getAccessToken();

console.log(token);

1 Ответ

0 голосов
/ 18 мая 2018

библиотека запроса-обещания возвращает только обещание, ее вовсе не нужно оборачивать rp с Promise внутри функции getAccessToken().

В следующем фрагменте выполните все свои исполнения в методе init(),Это асинхронная функция.Он ожидает выполнения getAccessToken() и присваивает значение токену переменной

"use strict";

var rp = require('request-promise');

function getAccessToken() {
    var options = {
        method: 'POST',
        uri: 'some_uri',
        body: {
           "username": "username",
           "password": "password"
        },
        json: true // Automatically stringifies the body to JSON
    };
    return rp(options);
)

async function init() {
    try {
        var tokenInfo = await getAccessToken();
        console.log(tokenInfo);
    } catch (e) {
        // Console err
    }
}

init();

Примечание. Не проверенный код

...