繁体   English   中英

在 IF 语句中使用异步函数的返回值

[英]Using Return Value from Async Function In IF Statement

NodeJS 和 JavaScript 的新手

我正在使用 NodeJS 进行 API 调用以在异步函数中返回一些 JSON 数据。 目前,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”,那么我将执行一个动作。 否则,我将执行不同的操作。

目前,我无法在 IF 条件中使用“getData()”的输出。 对后续步骤的任何帮助将不胜感激。

您需要等待承诺得到解决,因为现在您正在评估一个 Promise(待定)对象。

你的 getData() 函数很好。

let apiStatus = await getData(url);

我认为 async 在窗口范围内不起作用,您可以尝试一下。 如果这不起作用,那么您只需要等待承诺得到解决。

getData(url).then(
   status => {
      if (status.toString() === 'activated'){
         ...
      }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM