一.介绍
1.Promise 是 ES6 规定的语法,是 JS 中进行异步编程的新解决方案(旧方案单纯使用回调函数)
2.从语法来讲:Promise 是一个构造函数
3.从功能来讲:Promise 对象用来封装一个异步操作并可以获取其成功/失败的结果值
二.异步编程有哪些?且旧方案回调函数的使用
1.fs 文件操作(node)
require("fs").readFile("./index.html", (err, data) => {});
2.数据库操作
3.AJAX
$.get("/server", (data) => {});
4.定时器
setTimeout(() => {}, 1000);
三.为什么使用 Promise
1.指定回调函数的方式更加灵活
旧:必须在启动异步任务前指定
Promise:启动异步任务 => 返回 Promise 对象 => 给 Promise 对象绑定回调函数(甚至可以在异步任务结束以后指定多个)
2.支持链式调用(重要),可以解决回调地狱的问题
回调地狱: 回调函数里面套回调函数
setTimeout(function () {
//第一层
console.log("武林要以和为贵");
setTimeout(function () {
//第二程
console.log("要讲武德");
setTimeout(function () {
//第三层
console.log("不要搞窝里斗");
}, 1000);
}, 2000);
}, 3000);
回调地狱缺点: 可读性差,不便于异常处理