簡體   English   中英

我如何在 API javascript 中獲取數據?

[英]how can i get data in API javascript?

[更新] 我正在使用 javascript 來獲取數據並顯示它。 我創建了 2 個函數,DATA 和 DISP。 然后我先調用 DATA,然后調用 DISP...並且無法從 fn DATA 獲取數據以供以后全局使用。 [我將在天氣地圖上使用它]

所以我嘗試更新建議,盡管我現在可以使用 ASYNCH 強制執行訂單,但稍后訪問時我仍然得到 temp=0,但它在 DATA 例程中顯示良好。

---為什么全局變量 TEMP 在設置中沒有被改變,所以我稍后可以通過一個帶有 temp= 的警報顯示它,而不是 temp=0 ...注意它只有在我調用 disp 函數時才有效在設置內部,但如果我想將多個 API 調用到多個城市,我就不能這樣做 ====== 所以這里是代碼 ===

var temp=0; //global
var longitude=0

function DATA()
  {
    alert(" in DATA ")
//function getWeather() {
  let temperature = document.getElementById("temperature");
  let description = document.getElementById("description");
  let location = document.getElementById("location");

  let api = "https://api.openweathermap.org/data/2.5/weather";
  let apiKey = "f146799a557e8ab658304c1b30cc3cfd";

  location.innerHTML = "Locating...";

  navigator.geolocation.getCurrentPosition(success, error);

  function success(position) {
    latitude = position.coords.latitude;
    longitude = position.coords.longitude;
  
    let url =
      api +
      "?lat=" +
      latitude +
      "&lon=" +
      longitude +
      "&appid=" +
      apiKey +
      "&units=imperial";

    fetch(url)
      .then(response => response.json())
      .then(data => {
       // console.log(data);
         temp = data.main.temp;
        temperature.innerHTML = temp + "° F";
      //DISP()  // only works here
      
        location.innerHTML =
          data.name + " (" + latitude + "°, " + longitude + "°) ";
        description.innerHTML = data.weather[0].main;
      });


  }

  function error() {
    location.innerHTML = "Unable to retrieve your location";
  }
}

//getWeather()
//}
function DISP()
{
  alert("disp temp in disp "+ temp)
tempi.innerHTML =temp;

}

async function delayedGreeting() {
DATA()
  DISP()
}

delayedGreeting();

嘗試修復:

function displaydata(data){
...}

此外,如果您正在使用異步函數(也許當您嘗試從網絡獲取數據時),請確保使用 await 。 await 保持進程直到它得到承諾。 此外,添加更多代碼可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM