alltolove 发表于 2017-7-17 08:12:54

es6语法之Promise()方法

这种方法主要是判断异步程序的执行,如果没有他进行ajax的异步传参会很复杂,就得写一大堆的回掉函数传参,回掉套着回掉。。。比如:
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Document</title>
</head>
<body>
        <script>
        function a(callback){
                var json={
                        name:'alltolove',
                        fun:'swimming'
                }
                callback(json)
        }
       
        a(function(cb){
                document.write(cb.fun)
        })
        </script>
</body>
</html>
网页显示为:



下列代码为使用Promise():
let check=200
function aaaa(resolve,reject){
        if(check==200){
                resolve('aaaa sucsses')
        }else{
                reject('aaaa fail')
        }
}
function bbbb(resolve,reject){
        if(check==200){
                resolve('bbbb sucsses')
        }else{
                reject('bbbb fail')
        }
}
function cccc(resolve,reject){
        if(check==200){
                resolve('cccc sucsses')
        }else{
                reject('cccc fail')
        }
}

let tot=''

new Promise(aaaa).then(function(val){
        tot+=val
        return new Promise(bbbb)
}).then(function(val){
        tot+=val
        return new Promise(cccc)
}).then(function(val){
        tot+=val
        document.write(tot)
})
这里的resolve参数可以传任何类型的值,在then()里面的val参数接收上边传过来的值,如果判断为else的reject()代码就不会再往下执行,直接报错。网页显示为:

这种方式目前不支持ie浏览器,但是因为非常好用,许多主要开发移动端的公司都在用它(因为手机上的浏览器没有ie),jquery里有简单的promise的方法,一般都用jquery,但是我们也要理解他的原理。
页: [1]
查看完整版本: es6语法之Promise()方法