博主信息
博文 26
粉丝 0
评论 0
访问量 18738
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
实例演示fetch/async/awaitp的用法(1115作业)
高空中的云
原创
719人浏览过

fetch

XMLHttpRequest的更理想的替代方案,用于在Javascript脚本里发出HTTP请求。

  1. - `fetch()`使用promise,不使用回调函数,因此大大简化了写法,更简洁
  2. - 模块化设计,API分散在多个对象上(Response对象,Request对象,Headers对象),更合理
  3. - 默认情况下,fetch不会从服务端发送或接收任何cookies,如果站点依赖于用户session,则会导致未经认证的请求(要发送cookies,必须设置credentials选项)
  4. - 通过数据流(Stream对象)处理数据,可以分块读取,有利于提高网站性能,减少内存占用,对于请求大文件或者网速慢的场景相当有用。
  5. - 只有网络错误,或者无法连接时,fetch()才会报错,其他情况都不会报错(即便服务器返回的是4XX5XX状态码)

基本用法如下,

  1. // Promise<Response> fetch(input[, init]);
  2. fetch(url)
  3. .then(...)
  4. .then(...)
  5. .catch(...)

例如,

  1. fetch('https://api.php.cn/index')
  2. .then(response => response.json())
  3. .then(json => console.log(json))
  4. .catch(err => console.log('Request Failed',err))

fetch()接收到的response是一个Stream对象,response.json()是一个异步操作,取出所有内容,并将其转为JSON对象。

  1. // 自定义post函数postData
  2. let param = {
  3. title: 'foo',
  4. body: 'bar',
  5. userId: 1,
  6. };
  7. let url = 'https://jsonplaceholder.typicode.com/posts';
  8. postData(url, param)
  9. .then((json) => console.log(json))
  10. .catch(error => console.error(error))
  11. function postData(url, data) {
  12. // Default options are marked with *
  13. return fetch(url, {
  14. body: JSON.stringify(data), // must match 'Content-Type' header
  15. cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
  16. credentials: 'include', // include, same-origin, *omit
  17. headers: {
  18. 'Content-type': 'application/json; charset=UTF-8',
  19. },
  20. method: 'POST', // *GET, POST, PUT, DELETE, etc.
  21. mode: 'cors', // no-cors, cors, *same-origin
  22. redirect: 'follow', // manual, *follow, error
  23. referrer: 'no-referrer', // *client, no-referrer
  24. })
  25. .then(response => response.json()) // parses response to JSON
  26. }

async/await

是一种更舒适的方式使用promise的特殊语法,async确保了函数返回一个promise,也会将非promise值包装进去。在async函数实例中,允许使用await关键字。async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,无需刻意的链式调用promise

  1. async function test(){
  2. let promise = new Promise((resolve,reject) => {
  3. setTimeout(() => resolve("Promise done!"), 1000)
  4. });
  5. let result = await promise; // await 表示等待promise这个异步函数结束后才会执行,如果不加await,则会按照顺序执行,把promise函数赋值给result,而不是“Promise done!"这个执行结果返回的字符串。
  6. alert(result)
  7. }
  8. test();

async/await适用场景:

  • 有多个请求,且请求之间有依赖顺序关系
  • 并发请求,提高请求效率
  • 错误处理
批改老师:PHPzPHPz

批改状态:合格

老师批语:总结的不错, 继续加油
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学