Использование возвращаемого значения из функции Asyn c в выражении IF - PullRequest
0 голосов
/ 04 марта 2020

Новое для NodeJS и JavaScript

Я использую NodeJS, чтобы сделать вызов API для возврата некоторых данных JSON в асинхронной функции c. В настоящее время вызов API работает так, как задумано, и я проанализировал данные, которые я ищу. Проблема, с которой я столкнулся, заключается в использовании этих проанализированных json данных в качестве условия в операторе IF, чтобы я мог продолжить работу с другими функциями, предназначенными для сценариев. Чтобы упростить время, я написал его для отображения строкового оператора, если данные JSON соответствуют ожиданиям:

const fetch = require("node-fetch");
var accessToken = "Bearer <ACCESS TOKEN>";
var url = '<API ENDPOINT>';
var headers = {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': accessToken
};

const getData = async url => {
    try {
        const response = await fetch(url, {method: "Get", headers: headers});
        const json = await response.json();
        console.log(json.status);
        return json.status
    } catch (error) {
        console.log(error);
    }

};

let apiStatus = getData(url);
let activated = "ACTIVATED";
let configured = "CONFIGURED";

if (apiStatus.toString() !== activated) {
    console.log("BLAH");
}

По сути, если возвращаемое значение "json .status" равно "ACTIVATED", тогда я выполню действие. В противном случае я выполню другое действие.

В настоящее время я не могу использовать вывод getData () для использования в условии IF. Буду признателен за любую помощь в следующих шагах.

1 Ответ

1 голос
/ 04 марта 2020

Вам нужно дождаться разрешения обещания, потому что сейчас вы будете оценивать объект Promise (ожидающий).

Ваша функция getData () в порядке.

let apiStatus = await getData(url);

Я не думаю, что asyn c работает в области окна, вы можете попробовать это. Если это не сработает, тогда вам просто нужно дождаться выполнения обещания.

getData(url).then(
   status => {
      if (status.toString() === 'activated'){
         ...
      }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...