鱼C论坛

 找回密码
 立即注册
查看: 3453|回复: 1

[学习笔记] es6语法之Promise()方法

[复制链接]
发表于 2017-7-17 08:12:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这种方法主要是判断异步程序的执行,如果没有他进行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>
网页显示为:
saasdsasd.png


下列代码为使用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()代码就不会再往下执行,直接报错。网页显示为:
asdasds.png
这种方式目前不支持ie浏览器,但是因为非常好用,许多主要开发移动端的公司都在用它(因为手机上的浏览器没有ie),jquery里有简单的promise的方法,一般都用jquery,但是我们也要理解他的原理。

点评

相当nb啊  发表于 2017-7-17 08:17

评分

参与人数 2荣誉 +5 鱼币 +10 贡献 +5 收起 理由
小甲鱼 + 5
不二如是 + 5 + 5 + 5 不要停~

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 01:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表