如何获取 API 并使用在另一个函数中获得的值?

Posted

技术标签:

【中文标题】如何获取 API 并使用在另一个函数中获得的值?【英文标题】:How to fetching an API and using the value obtained in another function? 【发布时间】:2019-04-01 06:07:54 【问题描述】:

我正在使用来自 ES6 的新 fetch 接口来获取 ISS(国际空间站)的地理位置并在谷歌地图中呈现,但我不知道如何将值传递给其他函数iss_position

export async function currentPosition() 
  const fetchResult = fetch('http://api.open-notify.org/iss-now.json');
  const response = await fetchResult;
  const iss_position = await response.json();


export function initMap() 
  let map = new google.maps.Map(document.getElementById('map'), 
    center: iss_position,
    zoom: 5,
  );
  let marker = new google.maps.Marker(
    position: iss_position,
    map: map,
  );


currentPosition();
initMap();

【问题讨论】:

你的currentPosition 函数没有返回任何东西。 我知道!我需要从第一个函数修改或更改以全局公开 iss_position 的值并从第二个函数访问? 用 currentPossition 返回的值调用 initmap 并确保从 currentPossition 返回 iss 位置。 【参考方案1】:
async function currentPosition() 
  const fetchResult = fetch('http://api.open-notify.org/iss-now.json');
  const response = await fetchResult;
  const iss_position = await response.json();
  // Calling initMap with iss_position
  initMap(iss_position);


function initMap(iss_position) 
  let map = new google.maps.Map(document.getElementById('map'), 
    center: iss_position,
    zoom: 5,
  );
  let marker = new google.maps.Marker(
    position: iss_position,
    map: map,
  );


currentPosition();

// Please check if this write way to export multiple things or not.
// I'm a NodeJS developer and this is how we do in node.
export = 
    currentPosition,
    initMap

【讨论】:

【参考方案2】:

这应该可行:

async function currentPosition() 
  const fetchResult = fetch('http://api.open-notify.org/iss-now.json');
  const response = await fetchResult;
  const data = await response.json();
  const  latitude, longitude  = data.iss_position;
  initMap(latitude, longitude);


function initMap(latitude, longitude) 
  let map = new google.maps.Map(document.getElementById('map'), 
    center:  lat: latitude, lng: longitude ,
    zoom: 5,
  );
  let marker = new google.maps.Marker(
    position:  lat: latitude, lng: longitude ,
    map: map,
  );


currentPosition();

export  currentPosition, initMap ;

【讨论】:

以上是关于如何获取 API 并使用在另一个函数中获得的值?的主要内容,如果未能解决你的问题,请参考以下文章

微信公众平台消息接口里,如何用php获取用户头像

在反应链接中使用参数并在另一个组件中获取它的值?

从一个表中选择一个逗号分隔的值,并使用 SQL Server 中的函数在另一个表中的 where 条件中使用它

IOS Swift我如何从异步方法中获得价值[重复]

如何从SonarQube api获得500多个问题

asp中response.redirect怎么带值跳转并在另一页面怎么获得转来的值