簡體   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