解决 Deno 中调用外部 API 时出现的问题

什么是 Deno?

Deno 是一个新兴的 JavaScript/TypeScript 运行时环境,由 Node.js 的创始人 Ryan Dahl 所开发。与 Node.js 不同的是,Deno 去除了 Node.js 中存在的一些设计缺陷,如包管理器 npm 的导入方式、全局作用域等等,同时还提供了诸如标准库、内置工具、代码格式化、类型检查等功能。

在 Deno 中调用外部 API 遇到的问题

在 Deno 中调用外部 API 时,会遇到跨域请求以及网络请求超时等问题。这些问题的解决需要我们对 Deno 的一些特性有所了解。

解决跨域请求的问题

在浏览器中通过 XMLHttpRequest 或 fetch 发送跨域请求时需要设置 CORS(Cross-Origin Resource Sharing)头来进行请求的验证。在 Deno 中发送网络请求时,我们可以通过 Request 对象的 headers 属性实现类似的效果。

以下是一个发送跨域 GET 请求并获取响应的示例代码:

----- -------- - ----- ------------------------------------- -
  -------- - ------------------------------ --- --
---

----------------- -----------------

其中,'Access-Control-Allow-Origin': '*' 表示允许所有来源进行跨域请求,如果只希望允许某些来源可以通过,则需要将该头设置为相应的域名。

解决网络请求超时问题

在发送网络请求时,有时会因为网络阻塞或服务器响应过慢等原因导致请求超时。这时我们可以通过 Promise.race 方法来实现超时处理。

以下是一个发送 GET 请求并在 10 秒内获得响应结果的示例代码:

----- ---------- - --- ------------------
----- --------- - ------------- -- -
  ------------------- -- ----
-- -------

--- -
  ----- -------- - ----- --------------
    ------------------------------------- - ------- ----------------- ---
    --- ----------- ------- -- ------------- -- ---------- ------------------ --------
  ---

  ----------------- -----------------
- ----- --- -
  -----------------
- ------- -
  ------------------------
-

其中,Promise.race 方法接收一个包含 Promise 对象的数组,并返回最先完成的 Promise 对象的状态。如果请求超时,则调用 AbortController 实例的 abort() 方法取消请求并抛出异常。

总结

以上是解决 Deno 中调用外部 API 时出现的跨域请求和网络请求超时问题的方式。通过学习这些技术点,我们可以更加深入地了解 Deno 并在实际项目中使用它。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/651b7d0295b1f8cacd323f35


猜你喜欢

相关推荐

    暂无文章