很妙的请求超时控制?分享 1 段优质 JS 代码片段!

很妙的请求超时控制?分享 1 段优质 JS 代码片段!本内容首发于工粽号 程序员大澈 每日分享一段优质代码片段 欢迎关注和投稿 大家好 我是大澈 本文约 700 字 整篇阅读约需 1 分钟 今天分享一段优质 JS 代码片段 很秒的实现了对异步请求的超时控制 老规矩 先阅读代码片段并思考 再看

大家好,欢迎来到IT知识分享网。

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿!

大家好,我是大澈!

本文约 700+ 字,整篇阅读约需 1 分钟。

今天分享一段优质 JS 代码片段,很秒的实现了对异步请求的超时控制。

老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!

// 如果在指定的毫秒数内未返回,则拒绝并显示“超时”错误 const timeout = (promise, ms) =>Promise.race([promise, newPromise((_, reject) => setTimeout(() => reject(newError("Timeout")), ms))]); timeout(fetch("https://api.riki.wang"), 5000) .then(() =>"handleResponse") .catch(() =>"handleError");

分享原因

这段代码展示了如何通过 Promise.race 方法,来巧妙实现对异步操作的超时控制。

这在处理网络请求或其他可能耗时的操作时非常有用,可以避免长时间的等待导致的不良用户体验。

代码解析

1. Promise.race()

Promise.race() 方法是 JavaScript 中 Promise 对象的一个方法。

它用于并行执行多个 Promise 实例,并返回第一个完成(无论是成功完成还是失败拒绝)的 Promise 的结果,且其他 Promise 的结果会被忽略。

这里定义了一个名为 timeout 的函数,它接受一个 promise 对象和一个毫秒数 ms 作为参数。

在这个函数中,创建了一个新的 Promise ,它会在指定的 ms 毫秒后通过 reject 抛出一个 Timeout 错误。然后将这个新创建的 Promise 和传入的 promise 一起传递给 Promise.race 。

2. timeout(fetch, 5000)

调用 timeout 函数,并将 fetch 操作 和 超时时间 5000 毫秒作为参数传入。

如果在 5000 毫秒内 fetch 操作完成,就会进入 then 回调,执行 “handleResponse” 。

如果在 5000 毫秒内 fetch 操作未完成,那么由 setTimeout 创建的 Promise 会抛出 Timeout 错误,导致进入 catch 回调,执行 “handleError” 。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/123775.html

(0)
上一篇 2024-11-21 10:15
下一篇 2024-11-21 10:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信