取消Fetch API请求

     现在,Fetch API已经成为如今浏览器异步网络请求的标准方法,但Fetch也是有弊端的,好比: Fetch尚未方法终止一个请求,并且Fetch没法检测上传进度json

     如今咱们能够经过 AbortControllerAbortSignal 来终止,代码以下:     promise

          const controller = new AbortController()浏览器

          const signal = controller.signal网络

          fetch('./data.json', { signal })异步

      能够经过controller.abort()来通知终止事件,好比,你能够在请求发出后3秒来终止请求fetch

      setTimeout(() => { controller.abort(); }, 3 * 1000);spa

 

      若是请求完成了,调用absort()不会发生错误事件

      若是请求没有完成,那么Fetch就会抛出一个DOMException异常,异常的name属性值为"AbortError",能够在promise中的catch捕获这个异常io

     例如:  fetch('./data.json', { signal })console

                  .then((res) => {})

                  .catch((err) => {

                     if (err.name === 'AbortError') {

                         console.log('Fetch aborted');

                    } else {

                        console.log('Another error');

                   }

                 })

相关文章
相关标签/搜索