es6 Promise

 
Promise 解决回调地狱的问题。
我们在使用jq的ajax时,必须一步一步进行函数嵌套。Promise的出现使回调嵌套更加优雅了,也更加方便。
通俗易懂的来说,它相当于是打怪,得先把第一个boss打通关,下一个任务才会进行。
备注:.catch 是错误时执行的,也就是说,返回的是reject状态
 
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
    
</body>
<script>
var sdata = 1
function sp1(resolve,reject){
    setTimeout(()=>{
        if(sdata==1){
            resolve({mgs:'登录成功'})
        }else{
            reject({mgs:'登录失败'})
        }
    },2000)
}

function sp2(resolve,reject){
    setTimeout(()=>{
        if(sdata==1){
            resolve('开始获取用户信息')
        }else{
            reject('获取信息失败')
        }
    },2000)
}

var sp3 = (resolve,reject)=>{
    setTimeout(()=>{
        sdata =0 
        if(sdata==1){
            resolve('填充到页面')
        }else{
            reject('填充失败')
        }
    },2000)
}

new Promise(sp1).then((val)=>{
    console.log(val)
    return new Promise(sp2)
}).then((val)=>{
    console.log(val)
    return new Promise(sp3)
}).then((val)=>{
    console.log(val)
    return val
}).catch(err=>{
    console.log(err)
})

</script>
</html>

  

原文地址:https://www.cnblogs.com/chengxiang123/p/9438031.html