fetch
向服务器发送网络请求,并从服务器获取信息
语法:
let promise = fetch(url, [options])
url : 要访问的 URL。
options : 可选参数:method,header 等。
如果没有 options,那就是一个简单的 GET 请求,下载 url 的内容。
浏览器立即启动请求,并返回一个该调用代码应该用来获取结果的 promise
。
获取响应通常需要经过两个阶段:
1、当服务器发送了响应头(response header
),fetch
返回的 promise
就使用内建的 Response
对象来对响应头进行解析。
- 在这个阶段,可以通过检查响应头,来检查 HTTP 状态以确定请求是否成功,当前还没有响应体(
response body
)。 - 如果
fetch
无法建立一个 HTTP 请求,例如网络问题,亦或是请求的网址不存在,那么promise
就会reject
。异常的 HTTP 状态,例如 404 或 500,不会导致出现error
。 - 可以在
response
的属性中看到 HTTP 状态:
status
—— HTTP 状态码,例如 200。
ok
—— 布尔值,如果 HTTP 状态码为 200-299,则为true
。
2、第二阶段,为了获取response body
,需要使用一个其他的方法调用。
Response
提供了多种基于promise
的方法,来以不同的格式访问 body
:
-
response.text()
—— 读取 response,并以文本形式返回 response, -
response.json()
—— 将 response 解析为 JSON, -
response.formData()
—— 以FormData
对象的形式返回 response, -
response.blob()
—— 以 Blob(具有类型的二进制数据)形式返回 response, -
response.arrayBuffer()
—— 以 ArrayBuffer(低级别的二进制数据)形式返回 response, - 另外,
response.body
是 ReadableStream对象,它允许你逐块读取 body。
.contains()
Node.contains()
返回的是一个布尔值,来表示传入的节点是否为该节点的后代节点。
语法:
node.contains( otherNode )
node
是否包含otherNode
节点otherNode
是否是node
的后代节点.
如果otherNode
是node
的后代节点或是node
节点本身.则返回true
, 否则返回false
.
Element.setAttribute()
设置指定元素上的某个属性值。如果属性已经存在,则更新该值;否则,使用指定的名称和值添加一个新的属性。
要获取某个属性当前的值,可使用 getAttribute()
;要删除某个属性,可使用 removeAttribute()
。
语法:
element.setAttribute(name, value);
name : 表示属性名称的字符串
value : 属性的值或新值
oncanplaythrough 事件
oncanplaythrough
事件在视频/音频(audio/video)可以正常播放且无需停顿和缓冲时触发。
.root
root 属性用来获取当前 intersectionObserver 实例的根元素。
bind() 方法
JS中的 bind 方法,主要就是将函数绑定到某个对象,bind()会创建一个函数,函数体内的this对象的值会被绑定到传入bind()第一个参数的值,例如,a.bind(obj)
,实际上可以理解为obj.a()
,这时,a函数体内的this自然指向的是obj
forEach
forEach()
方法对数组的每个元素执行一次给定的函数。