当前位置: 首页 > article >正文

关于Promise的小测验

关于Promise的小测验

题目

// 编码挑战 #1

/*

在这个挑战中,你将构建一个函数 ‘whereAmI’,该函数仅基于 GPS 坐标显示国家信息。为此,你将使用第二个 API 来对坐标进行地理编码。

以下是你的任务:

第一部分

创建一个函数 ‘whereAmI’,该函数接收纬度值(lat)和经度值(lng)作为输入(这些是 GPS 坐标,示例如下)。

对提供的坐标进行“逆地理编码”。逆地理编码的意思是将坐标转换为有意义的位置,比如城市和国家名称。使用这个 API 进行逆地理编码:https://geocode.xyz/api。 使用此格式的 URL 进行 AJAX 调用:https://geocode.xyz/52.508,13.381?geoit=json。使用 fetch API 和 promise 来获取数据。不使用我们创建的 getJSON 函数,那是作弊 😉

一旦你有了数据,查看控制台中接收到的所有关于该位置的属性。然后,使用这些数据,在控制台上记录这样的消息:‘You are in Berlin, Germany’

在 promise 链的末尾链接一个 .catch 方法,并将错误记录到控制台

这个 API 每秒允许你进行 3 次请求。如果你快速重新加载,你将得到代码为 403 的错误。这是请求的错误。记住,fetch() 在这种情况下并不会拒绝 promise。因此,创建一个错误来自己拒绝 promise,并提供有意义的错误信息。

第二部分

  1. 现在是时候使用接收到的数据来显示国家信息了。因此,从地理编码 API 结果中获取相关属性,并将其插入到我们一直在使用的国家 API 中。

  2. 显示国家信息并捕获任何错误,就像我们在上一课中所做的那样(你甚至可以复制这段代码,无需重新输入相同的代码)

测试坐标 1:52.508, 13.381(纬度,经度)

测试坐标 2:19.037, 72.873

测试坐标 3:-33.933, 18.474

祝你好运 😀

*/

由于geocode在国内无法访问,所以在这里更换了一种逆地址编码API,名字叫opencage,大家可以试一下,注册即可使用,也可以自己寻找一个类似的API,国内有很多类似的API都可以使用

代码示例

//因为opencage中国地区输出的国家名称是中文的,所以这里使用一个简单的对象映射来处理一下
function translateCountryToEnglish(country) {
  const translations = {
    德国: 'Germany',
    印度: 'India',
    南非: 'South Africa',
  };

  return translations[country] || 'Translation not available';
}

function whereAmI(lat, lng) {
//通过fetch请求API,并将经纬度参数上传
  fetch(
    `https://api.opencagedata.com/geocode/v1/json?q=${lat}%2C${lng}&key=e604731002c3488db7706af06a8c693c`
  )
//下面的手动抛出错误不一定有效,看了一下返回,好像并没有ok的这个参数
    .then(res => {
      if (!res.ok) throw new Error(`数据获取失败!😟`);
      return res.json();
    })
//拿到response,传递给data,并由data中提取我们需要的数据
    .then(data => {
      console.log(data);
      console.log(
        `你在${data.results[0].components.country}${data.results[0].components.city}`
      );
//下面的代码从之前的demo中直接复制过来的,使用另一个api请求国家的信息
      return fetch(
        `https://restcountries.com/v2/name/${translateCountryToEnglish(
          data.results[0].components.country
        )}`
      );
    })
    .then(res => {
      if (!res.ok) throw new Error(`国家不存在(${res.status})`);

      return res.json();
    })
    .then(data => renderCountry(data[0]))
//捕获错误
    .catch(err => console.error(`${err.message}😟`));
}
//测试数据
whereAmI(52.508, 13.381);
whereAmI(19.037, 72.873);
whereAmI(-33.933, 18.474);

在这里插入图片描述


http://www.kler.cn/a/457876.html

相关文章:

  • ORA-01187 it failed verification tests 增加tempfile
  • JVM对象内存分配
  • ubuntu 如何使用vrf
  • 电子电气架构 --- 汽车电子电器设计概述
  • 前端安全措施:接口签名、RSA加密、反调试、反反调试、CAPTCHA验证
  • Unity-Mirror网络框架-从入门到精通之Basic示例
  • 【Rust自学】7.5. use关键字 Pt.2 :重导入与换国内镜像源教程
  • Pytest基础01: 入门demo脚本
  • Bagging方法和Dropout方法的简单解释
  • Scala语言的函数实现
  • 【Java基础面试题038】栈和队列在Java中的区别是什么?
  • JVM内存结构详解
  • 正则表达式:常见问题与解决方案
  • 【魅力golang】之-反射
  • Vue项目如何设置多个静态文件;如何自定义静态文件目录
  • 【机器学习】SVM支持向量机(一)
  • Raven Glass:迈向AR领域的iPod,开启全天候佩戴的时尚新时代
  • Redis - Token JWT 概念解析及双token实现分布式session存储实战
  • C++ 设计模式:享元模式(Flyweight Pattern)
  • c#中using语句
  • 【LLM综述】29种大模型Prompt Engineering技术
  • 【大语言模型】LangChain 核心模块介绍(Memorys)
  • Python Polars快速入门指南:LazyFrames
  • 苹果手机iOS18.2系统苹果手机便签测评
  • Type-C接口的拍摄云台
  • OpenCV-Python实战(13)——图像轮廓