目录
1. 回调函数
它是ES5提供的异步编程解决方案
不过这种方法有诸多不便之处,它虽然由我们定义但是执行却依赖于第三方,且逻辑复杂就需要多层回调,不方便使用
//异步
setTimeout(() => {
console.log('setTimeout')
}, 0)
2. Promise
它是ES6提供的一种异步编程解决方案,Promise是一个容器,保存着将来才会执行的代码;
从语法角度来说Promise是一个对象,可以用来获取异步操作的消息。异步操作,同步解决,避免了层层嵌套的回调函数。
- 实例化
Promise构造函数接收一个函数作为参数,也就是回调函数;
该函数的两个参数分别是resolve和reject。
resolve作为成功的回调函数,reject作为失败的回调函数。
Promise对象代表一个异步操作有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。最后返回resolved(已定型)结果。
- 实例方法
定义在Promise.prototype中的方法,通过Promise实例可以直接调用
then() 状态由pending变为fulfilled的时候也就是异步操作成功之后执行该回调函数
参数:回调函数,回调函数的参数为resolve函数传递过来的值
返回值:返回一个新的Promise实例对象,因此可以使用链式调用
catch() 由pending变为rejected的时候执行该回调函数也就是异步失败之后执行该回调函数
参数:回调函数,回调函数的参数为reject函数传递过来的值