Сделать синхронный запрос в NodeJS - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь отправить запрос с помощью NodeJS и запросить.Я пытался использовать обещания, и async / await, как и в других постах, говорит, что мне удается заставить работать.

const express = require('express');
const bodyParser = require('body-parser');
var request = require("request");

const app = express();

app.use(bodyParser.json());

var token = '';
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;

function postRequest(options) {
    request(options, function (error, response, body) {
        if (error) throw new Error(error);

        token = (JSON.parse(body)).access_token;
        console.log(token + 'tet');
        return (token);
    });
}

async function requestToken() {
    var options = {
        method: 'POST',
        url: 'https://simplivity@xxxx/api/oauth/token',
        headers: { 'Content-Type': 'application/json' },
        formData:
        {
            grant_type: 'password',
            username: 'administrator@vsphere.local',
            password: 'xxxx'
        }
    };
    try {
        var test = await postRequest(options)
        return (test);
    } catch (error) {
        console.error(error);
    }
}

var test = requestToken();
console.log(test + 'TOT');

Это ответ:

[object Promise]TOT
00bd0beb-8967-4534-8c63-2e5d0d6876d4tet

Что должно быть наоборот.

спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 19 июня 2019
(async () => {
  var test = await requestToken();
  console.log(test + 'TOT');
})();

Хотя не очень аккуратно, что-то подобное должно работать.

Лучше:

requestToken()
.then(response => {
  console.log(response);
});
1 голос
/ 19 июня 2019

Вам необходимо вернуть обещание.

Измените postRequest на:

function postRequest(options) {
    return new Promise(function(resolve, reject) {
        request(options, function (error, response, body) {
            if (error) throw new Error(error);

            token = (JSON.parse(body)).access_token;
            console.log(token + 'tet');
            resolve(token);
        });
    });  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...