什么是 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 请求并获取响应的示例代码:
const response = await fetch('https://example.com/resource', { headers: { 'Access-Control-Allow-Origin': '*' }, }); console.log(await response.text());
其中,'Access-Control-Allow-Origin': '*' 表示允许所有来源进行跨域请求,如果只希望允许某些来源可以通过,则需要将该头设置为相应的域名。
解决网络请求超时问题
在发送网络请求时,有时会因为网络阻塞或服务器响应过慢等原因导致请求超时。这时我们可以通过 Promise.race 方法来实现超时处理。
以下是一个发送 GET 请求并在 10 秒内获得响应结果的示例代码:
-- -------------------- ---- ------- ----- ---------- - --- ------------------ ----- --------- - ------------- -- - ------------------- -- ---- -- ------- --- - ----- -------- - ----- -------------- ------------------------------------- - ------- ----------------- --- --- ----------- ------- -- ------------- -- ---------- ------------------ -------- --- ----------------- ----------------- - ----- --- - ----------------- - ------- - ------------------------ -
其中,Promise.race 方法接收一个包含 Promise 对象的数组,并返回最先完成的 Promise 对象的状态。如果请求超时,则调用 AbortController 实例的 abort() 方法取消请求并抛出异常。
总结
以上是解决 Deno 中调用外部 API 时出现的跨域请求和网络请求超时问题的方式。通过学习这些技术点,我们可以更加深入地了解 Deno 并在实际项目中使用它。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651b7d0295b1f8cacd323f35