Promise 知识点
Promise(ES6 新增),本质上属于构造函数,可以实例化对象,封装一个异步操作并获取其成功或失败的结果
1. Promise 用法
new Promise(excutor).then( onResolved, onRejected )
==> new Promise( resolve,reject)=> { } ).then( val => { //resolve 成功回调函数 }, reason => { //reject 失败回调函数 })*
excutor 函数:执行器,是一个回调函数 (resolve,reject)=> { }
onResolved 函数:成功的回调函数 val => { }
onRejected 函数:失败的回调函数 reason => { }
执行器内部包裹(处理)一个异步任务,成功执行 resolve,失败执行 reject。
注:
1. 执行器在 Promise 内部是立即同步执行;
2. Promise().then、 Promise().catch 属于异步微任务;
3. resolve 和 reject 均属于回调函数,写在 then( ) 当中,then 的链式调用,解决了回调地狱的问题。
代码实例:
new Promise( (res,rej) => {
if(条件) {
// 条件成功,执行 resolve 回调函数
res();
} else {
//失败,执行 reject 回调函数
rej();
}
}).then( () => {
//res 函数体},() => { //rej 函数体 })
// 刮刮乐小游戏
// 随机数生成
function ranNum(m, n) {
return Math.ceil(Math.random() * (n - m + 1)) + m - 1;
}
new Promise((res,rej) => {
setTimeout(() => {
let num = ranNum(0, 100);
if (num < 33) {