Promise对象和async函数
异步代码
现在常见的的异步代码
- 定时器
- ajax 请求
注意事项
1.在 JavaScript 中,记住一件事儿:所有的异步回调函数执行一定在普通代码执行之后
2.如果想要获取异步代码的执行结果:通过回调函数来接收
基于回调函数的异步流程控制
封装一个原生 get 请求
function get(url, cd) {
const xhr = new XMLHttpRequest();
xhr.open("get", url);
xhr.send();
xhr.onload = function () {
cd(this.response);
};
}
原生 ajax 请求注意事项
事件最好放在发送请求前 不然像捕获发送失 败这种函数会获不到
const xhr = new XMLHttpRequest();
xhr.addEventListener("load", function () {
resolve(this.response);
});
xhr.addEventListener("error", function (err) {
reject(err);
});
xhr.open("get", url);
xhr.send();
异步并行
- 一起执行 不分先后顺序
get("http://jsonplaceholder.typicode.com/posts", function (res) {
console.log(1);
});
get("http://jsonplaceholder.typicode.com/comments", function (res) {
console.log(2);
});
get("http://jsonplaceholder.typicode.com/users", function (res) {
console.log(3);
});
异步串行
- 依次执行 上一层执行完毕在执行下面代码
get("http://jsonplaceholder.typicode.com/posts", function (res) {
console.log(1);
get("http://jsonplaceholder.typicode.com/comments", function (res) {
console.log(2);
get("http://jsonplaceholder.typicode.com/users", function (res) {
console.log(3);
});
});
});