封装Promise
- 再promise.then 内部 return 了一个 新的 promise对象
- 可以在后续再写一个 .then
// 封装
function fn(){
//使用过 Promise 封装异步函数
const p = new Promise (function(fulfilled, rejected){
/**
* fulfilled 会把我们这个 promise 状态转换为 成功
* rejected 会把我们这个 promise 状态转换为 失败
* 两个都是函数
*/
//异步程序
//设置随机数 (生成 0~1 向下取整 * 3000 0 ~ 2700 ) + 1500
const timer = Math.floor(Math.random()*3000)+ 1500
// 设置延时器
setTimeout(()=>{
if(timer> 3000){
// 判断 随机生成的延时器时间 timer> 3000 毫秒时 表示链接失败 调用函数 rejected 打印
rejected('网络申请失败, 请重新申请')
}else{
// 判断 随机生成的延时器时间 timer> 3000 毫秒时 表示链接成功 调用函数 fulfilled 打印
fulfilled('网络申请成功, 欢迎访问')
}
},timer)
})
return p
}
//使用 Promise 实例化对象对像里的方法
p.then(res)=>{
/**
* 在 Promise 触发 成功状态时会触发
* 且接受 fulfilled 时传递的参数 res这里 其实就是字符串('网络申请成功, 欢迎访问')
*/
console.log(res)
return fn()
}).then(res)=>{
console.log(res)
return fn()
}.then(res)=>{
console.log('第二次声请网络成功')
return fn()
} .catch(res)=>{
/**
* 在 Promise 触发 失败状态时会触发
* 且接受 rejected 时传递的参数 res这里 其实就是字符串('网络申请失败, 请重新申请')
*
*/
console.log(res)
})