Promise从入门到拿Offer之基本概念介绍
1. Promise是什么?
Promise是js中进行异步编程的新解决方案。从语法上说,它是一个构造函数;从功能上说,Promise对象用来封装一个异步操作并可以获取其成功/失败结果值。
2. Promise的状态有哪些?
Promise的状态有三种:pending、resolved、rejected。
状态改变只有两种:1)pending ——> resolved;2)pending ——> rejected。
注意:状态改变只有两种,且一个Promise对象只能改变一次。也即只有成功或失败其中一种结果。成功的结果我们称之为valve;失败的结果我们称之为reason。
3. Promise的基本流程
Promise的的基本流程4. Promise的基本使用
// 1. 创建Promise对象,此时状态为Pending,指定执行器函数
const p = new Promise((resolve, reject) => {
// 2. 执行器函数启动异步任务
setTimeout(() => {
const num = Math.random();
// const num = 3;
// 3. 根据不同结果做不同处理
if (num % 2 === 1) {
// 成功则调用resolve()函数,指定成功的value,状态变为resolved
resolve("奇数为成功的结果:" + num);
} else {
// 失败则调用reject()函数,指定失败的reason,状态变为rejected
reject("偶数为失败的结果:" + num);
}
}, 1000);
});
// 4.指定成功或失败的的回调函数获取成功的value或失败的reason
p.then(
// 成功的回调函数获取成功的value
value => {
console.log(value)
},
// 失败的的回调函数获取失败的reason
reason => {
console.log(reason)
}
)
5. 回调函数的分类
1)同步回调函数:立即执行,完全结束调用才结束,不会放入回调队列中。
2)异步回调函数:不会立即执行,会放入回调队列中将来执行。如定时器调用、ajax请求,文件操作等。
6. 常见的JS错误
1)Error:所有错误的父类型。
2)ReferenceError:引用变量不存在。
3)TypeError:数据类型不正确。
4)RangeError:数据值超过范围。
5)SyntaxError:语法错误。