目录

解决AbortController中断请求无法再次请求

示例代码

express代码

javascript 复制代码
const express = require('express')
const app = express()

//导入cors跨域中间件
const cors = require('cors')
// 全局注册,加前缀
app.use(cors())

app.get('/list', (req, res) => {
  // 直接返回对象
  console.log('接收到的参数是', req.query)
  //结束本次请求,设置响应体:返回给用户内容
  setTimeout(() => {
    res.send({ message: 'success', code: 2000, data: [{ name: '张三', age: 18 }] })
  }, 4000)
})

app.post('/data', (req, res) => {
  setTimeout(() => {
    res.send({ message: 'success', code: 2000, data: [{ name: '张三666', age: 18 }] })
  }, 4000)
})

app.listen('3000', () => {
  console.log('服务启动成功')
})

html代码

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button onclick="sendGet()">get请求</button>
    <button onclick="sendPost()">post请求</button>
    <button onclick="cancel()">取消</button>
  </body>

  <script>
  	// 初始化 controller 为 null,用来处理中止请求后无法再次发请求
    let controller = null
    if (!controller) {
      function sendGet() {
        controller = new AbortController()
        fetch('http://localhost:3000/list?name=haha&age=19', {
          signal: controller.signal
        })
          .then((res) => {
            if (res.ok) {
              return res.json()
            }
          })
          .catch((err) => {
            console.log(err)
          })
      }
      function sendPost() {
        controller = new AbortController()
        fetch('http://localhost:3000/data', {
          method: 'POST',
          body: JSON.stringify(),
          headers: {
            'Content-Type': 'application/json'
          },
          signal: controller.signal
        }).then((res) => {
          console.log(res)
        })
      }
    }
    function cancel() {
      controller.abort() // 取消请求
      controller = ''
    }
  </script>
</html>
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
小四是个处女座1 分钟前
js 效果展示 拿去练手
前端
无名友3 分钟前
HTML — 定位
前端·css·html
前端开发张小七10 分钟前
每日一练:1. leetcode两数之和
前端·python
刺客-Andy24 分钟前
React 第三十节 使用 useState 和 useEffect Hook实现购物车
前端·javascript·react.js
菜鸡且互啄6926 分钟前
vxe-table
java·前端·javascript
快起来搬砖了31 分钟前
UniApp 页面布局自定义头部导航
前端·javascript·uni-app
家里有只小肥猫34 分钟前
uniApp 设置动态tabs(不是自定义tab哈)
前端·javascript·uni-app
请叫我小周啊35 分钟前
前端性能测试工具 —— WebPageTest
前端
小鱼计算机39 分钟前
【5】深入学习npm-Nodejs开发入门
前端·学习·npm·node.js
xiezhuangshunv40 分钟前
20250407-组件v-model
java·服务器·前端