promise

大白话讲解Promise(一) - 吕大豹 - 博客园

概况:

1、 Promise是一个构造函数(对象),

2、本身有all、race、reject、resolve方法 (不用new实例,可直接调用)

3、原型有then、catch方法 (通过实例调用)

精髓:支持异步依照结果作为状态,根据状态选择逻辑

分析:resolve和reject方法等异步执行完之后才会调用,也就是说在操作异步数据时,不会落空,都有一个回应。

场景:

回调地狱 链式

多接口同时请求结束后,统一渲染页面 Promise.all()

//runAsync1(), runAsync2(), runAsync3()都是Promise实例

Promise
.all([runAsync1(), runAsync2(), runAsync3()])
.then(function(results){
    console.log(results);
});

/*results: [runAsync1的结果,runAsync2的结果,runAsync3的结果]
*/

请求时间过长,设置延迟报错 Promise.race()

//可做公共函数
const timeOut=(delay)=>{
    return Promise((reslove,reject)=>{
        setTimeOut(()=>{
            reject('请求超时')
        },dalay)
    })
}


const getImages=(p)=>{
        return Promise((reslove,reject)=>{
            getImageServcie(p).then(res=>{
                resolve(res)
        }),catch(err=>{
              reject(err)
        })
    })

}


Promise.race([timeOut(5000),getImages()]).then(res=>{
        consloe.log(res)
}).catch(err=>{
        console.log(err)
})

/**
    resolve的结果会被then的第一个函数接收
    reject的结果会被catch或then的第二个函数接受

    catch的优点,在于会捕获then中的报错,不会阻塞js的运行

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值