首页 > 其他 > 详细

Promise的基本用法(一)

时间:2020-04-10 15:35:15      阅读:70      评论:0      收藏:0      [点我收藏+]
1.Promise是什么?

Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象。

技术分享图片

 

 

 

2.Promise的基本用法

2.1 then中成功失败的执行

// resolve代表成功 reject失败 都是一个函数

let p = new Promise(function(reslove,reject){

    //reslove(‘成功‘)  //状态由等待变为成功,传的参数作为then函数中成功函数的实参

    reject(失败)  //状态由等待变为失败,传的参数作为then函数中失败函数的实参

})

//then中有2个参数,第一个参数是状态变为成功后应该执行的回调函数,第二个参数是状态变为失败后应该执行的回调函数。

p.then((data)=>{

    console.log(成功+data)

},(err)=>{

    console.log(失败+err)

})

Promise承诺:默认情况下是等待状态pending,如果有一天状态转变为成功就成功了,如果状态变成失败就失败了。状态一旦改变了就不能再改变了。

2.2如果then中返回了一个promise 会将promise的结果继续传给第二then中(如果结果是将状态改成成功就走下一个then的成功回调,状态改为失败就走下一个then的失败回调)

function read( content ) {
    return new Promise(function( reslove,reject ) {
        setTimeout(function(){
                if(content>4){
                    resolve(content)
                }else{
                    reject(小于4)
                }
        },1000)
    })
}

read(1).then(( data )=>{
    console.log(data)
},( err )=>{
    console.log(err) //小于4
    return read(2) //将状态改为了失败
})
.then(( data )=>{
    console.log(data,data)
},( err )=>{
    console.log(err) //小于4
})

2.3 第一个then不管是走成功还是失败的回到函数,只要返回一个普通值(不抛出错误或者返回promise),都会执行下一个then的成功的回调

let p = new Promise(function(reslove,reject){
    reject(失败1)
})

p.then((data)=>{
    console.log(成功+data)
},(err)=>{
    console.log(失败+err) //失败失败1
})
.then((data)=>{
    console.log(成功1+data) //成功1undefined
},(err)=>{
    console.log(失败1+err)
})

eg:抛出错误执行下一个then的失败

let p = new Promise(function(reslove,reject){
    reject(失败1)
})

p.then((data)=>{
    console.log(成功+data)
},(err)=>{
    console.log(失败+err) //失败失败1
})
.then((data)=>{
    console.log(成功1+data) //成功1undefined
    throw Error(下一个失败)
},(err)=>{
    console.log(失败1+err)
})
.then((data)=>{
    console.log(成功2+data)
},(err)=>{
    console.log(失败2+err) //失败2Error: 下一个失败
})

 

Promise的基本用法(一)

原文:https://www.cnblogs.com/shun1015/p/12672935.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!