promise&fetch

promise

promise状态

pending(进行中)、fulfilled(已成功)和 rejected(已失败)。

then方法

  1. then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise
    执行失败时的回调,两个函数只会有一个被调用。
  2. 通过 .then 形式添加的回调函数,不论什么时候,都会被调用。

fetch

  1. fetch 规范与 jQuery.ajax() 的区别:
  • 当接收到一个代表错误的 HTTP 状态码时,从 fetch() 返回的 Promise 不会被标记为 reject, 即使响应的 HTTP状态码是 404 或 500。相反,它会将 Promise 状态标记为 resolve (但是会将 resolve 的返回值的 ok属性设置为 false ),仅当网络故障时或请求被阻止时,才会标记为 reject。
  • fetch() 可以不会接受跨域 cookies;你也可以不能使用 fetch() 建立起跨域会话。其他网站的 Set-Cookie头部字段将会被无视。
  • fetch 不会发送 cookies。除非你使用了credentials 的初始化选项。

eg:

fetch('http://example.com/movies.json')
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(myJson);
  });
  1. 支持的请求参数
    fetch() 接受第二个可选参数,一个可以控制不同配置的 init 对象
  2. 发送带凭据的请求
    为了让浏览器发送包含凭据的请求(即使是跨域源),要将credentials: 'include’添加到传递给 fetch()方法的init对象。
    如果只想在请求URL与调用脚本位于同一起源处时发送凭据,添加 credentials: ‘same-origin’。
    要改为确保浏览器不在请求中包含凭据,使用 credentials: ‘omit’。
  3. 上传 JSON 数据
    使用 fetch() POST JSON数据
  4. 上传文件
    可以通过 HTML <input type="file" /> 元素,FormData()fetch() 上传文件。
  5. 上传多个文件
    可以通过HTML <input type="file" mutiple/> 元素,FormData()fetch() 上传文件。
  6. 检测请求是否成功
    如果遇到网络故障,fetch() promise 将会 reject,带上一个 TypeError 对象。虽然这个情况经常是遇到了权限问题或类似问题——比如 404 不是一个网络故障。想要精确的判断 fetch() 是否成功,需要包含 promise resolved 的情况,此时再判断 Response.ok 是不是为 true。
  7. 自定义请求对象
    除了传给 fetch() 一个资源的地址,还可以通过使用 Request() 构造函数来创建一个 request 对象,然后再作为参数传给 fetch()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值