批改状态:合格
老师批语:
同步: 顺序执行, 优点: 静态预判结果可控, 缺点: 耗时任务阻塞执行
异步: 乱序执行, 优点: 不会阻塞代码,体验好, 缺点: 顺序不可控
传统方式,信息会在新页面中或者弹窗中查看,用户体验不好
Ajax: 局部更新,用户不需要离开当前页面就可以看到新内容, 单页面应用SPA
1. 创建对象: new XMLHttpRequest();2. 响应类型: xhr.responseType = "json";3. 配置参数: xhr.open("GET", url, true);4. 请求回调: xhr.onload = () => console.log(xhr.response);5. 失败回调: xhr.onerror = () => console.log("Error");6. 发起请求: xhr.send(null);
xhr 至少监听2个事件: load,error, 调用2个函数: open,send
post请求,需要设置一下请求头与请求的数据,其它与get请求完全相同
function getUser1(btn) {//1. 创建对象const xhr = new XMLHttpRequest();//2. 响应类型xhr.responseType = 'json';//3. 配置参数// 不传get参数,默认返回全部用户, 用table显示let url = 'http://website.io/users.php';// 如果有get参数,用户id,用ul列表显示url = 'http://website.io/users.php?id=1';xhr.open('GET', url);//4. 请求回调xhr.onload = () => {console.log(xhr.response);// 将数组渲染到页面中render(xhr.response, btn);};//5. 失败回调xhr.onerror = () => console.log('Error');//6. 发起请求xhr.send(null);}
fetch(url).then(res).then(...).catch(err)
function getUser2(btn) {let url = 'http://website.io/users.php';// fetch的所有操作都是异步的,但是通过then使用顺序可控fetch(url).then(function (response) {return response.json();}).then(function (json) {// 控制台console.log(json);// 将数组渲染到页面中render(json, btn);});}
<script type="module">// js中, 所有代码共用一个全局作用域: window// 导入模块import { username, hello } from './modules/m1.js';console.log(username);console.log(hello(username));</script>
<script type="module">// 导入模块的默认成员不要用对象字面量,用标识符// 只要不用对象字面量接收模块成员,就是默认导出import User from './modules/m3.js';console.log(typeof User);const user = new User('王老师');console.log(user.username);console.log(user.getUsername(user.username));</script>
<script type="module">// 接收混合导入成员,默认成员的命名,必须放在非默认的前面// import useremail, { username, hello } from './modules/m4.js';// 默认导出成员,在导入时可以随意命名的,useremail只是巧合import email, { username, hello } from './modules/m4.js';// console.log(useremail);console.log(email);console.log(hello(username));</script>
<script type="module">// 导入的成员,过多时,使用{...}会很长的// 可以将所有的导入成员,全部挂载到一个对象上// 此时, 导入模块的成员,自动成为该对象上的属性// 这个对象就是: 命名空间// import email, { username, hello } from './modules/m4.js';import * as user from './modules/m4.js';console.log(user);// 此时,访问模块成员时, 必须添加空间前缀,其实就是user对象console.log(user.username);console.log(user.hello(user.username));// 访问默认console.log(user.default);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号