javascript基础从小白到高手系列一千二十七:中断请求

Fetch API 支持通过AbortController/AbortSignal 对中断请求。调用AbortController.
abort()会中断所有网络传输,特别适合希望停止传输大型负载的情况。中断进行中的fetch()请求会
导致包含错误的拒绝。
let abortController = new AbortController();
fetch(‘wikipedia.zip’, { signal: abortController.signal })
.catch(() => console.log(‘aborted!’);
// 10 毫秒后中断请求
setTimeout(() => abortController.abort(), 10);
// 已经中断
Headers 对象
Headers 对象是所有外发请求和入站响应头部的容器。每个外发的Request 实例都包含一个空的
Headers 实例,可以通过Request.prototype.headers 访问,每个入站Response 实例也可以通过
Response.prototype.headers 访问包含着响应头部的Headers 对象。这两个属性都是可修改属性。
另外,使用new Headers()也可以创建一个新实例。
Headers 与Map 的相似之处
Headers 对象与Map 对象极为相似。这是合理的,因为HTTP 头部本质上是序列化后的键/值对,
它们的JavaScript 表示则是中间接口。Headers 与Map 类型都有get()、set()、has()和delete()
等实例方法,如下面的代码所示:
let h = new Headers();
let m = new Map();
// 设置键
h.set(‘foo’, ‘bar’);
m.set(‘foo’, ‘bar’);
// 检查键
console.log(h.has(‘foo’)); // true
console.log(m.has(‘foo’)); // true
console.log(h.has(‘qux’)); // false
console.log(m.has(‘qux’)); // false
// 获取值
console.log(h.get(‘foo’)); // bar
console.log(m.get(‘foo’)); // bar
// 更新值
h.set(‘foo’, ‘baz’);
m.set(‘foo’, ‘baz’);
// 取得更新的值
console.log(h.get(‘foo’)); // baz
console.log(m.get(‘foo’)); // baz
// 删除值
h.delete(‘foo’);
m.delete(‘foo’);
// 确定值已经删除
console.log(h.get(‘foo’)); // undefined
console.log(m.get(‘foo’)); // undefined
Headers 和Map 都可以使用一个可迭代对象来初始化,比如:
let seed = [[‘foo’, ‘bar’]];
let h = new Headers(seed);
let m = new Map(seed);
console.log(h.get(‘foo’)); // bar
console.log(m.get(‘foo’)); // bar
而且,它们也都有相同的keys()、values()和entries()迭代器接口:
let seed = [[‘foo’, ‘bar’], [‘baz’, ‘qux’]];
let h = new Headers(seed);
let m = new Map(seed);
console.log(…h.keys()); // foo, baz
console.log(…m.keys()); // foo, baz
console.log(…h.values()); // bar, qux
console.log(…m.values()); // bar, qux
console.log(…h.entries()); // [‘foo’, ‘bar’], [‘baz’, ‘qux’]
console.log(…m.entries()); // [‘foo’, ‘bar’], [‘baz’, ‘qux’]

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值