QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码
查看: 169|回复: 1

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

[复制链接]
最佳答案
23 
累计签到:396 天
连续签到:144 天
发表于 2017-7-17 08:12:54 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
这种方法主要是判断异步程序的执行,如果没有他进行ajax的异步传参会很复杂,就得写一大堆的回掉函数传参,回掉套着回掉。。。比如:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.         <meta charset="UTF-8">
  5.         <title>Document</title>
  6. </head>
  7. <body>
  8.         <script>
  9.         function a(callback){
  10.                 var json={
  11.                         name:'alltolove',
  12.                         fun:'swimming'
  13.                 }
  14.                 callback(json)
  15.         }
  16.        
  17.         a(function(cb){
  18.                 document.write(cb.fun)
  19.         })
  20.         </script>
  21. </body>
  22. </html>
复制代码

网页显示为:
saasdsasd.png


下列代码为使用Promise():
  1. let check=200
  2. function aaaa(resolve,reject){
  3.         if(check==200){
  4.                 resolve('aaaa sucsses')
  5.         }else{
  6.                 reject('aaaa fail')
  7.         }
  8. }
  9. function bbbb(resolve,reject){
  10.         if(check==200){
  11.                 resolve('bbbb sucsses')
  12.         }else{
  13.                 reject('bbbb fail')
  14.         }
  15. }
  16. function cccc(resolve,reject){
  17.         if(check==200){
  18.                 resolve('cccc sucsses')
  19.         }else{
  20.                 reject('cccc fail')
  21.         }
  22. }

  23. let tot=''

  24. new Promise(aaaa).then(function(val){
  25.         tot+=val
  26.         return new Promise(bbbb)
  27. }).then(function(val){
  28.         tot+=val
  29.         return new Promise(cccc)
  30. }).then(function(val){
  31.         tot+=val
  32.         document.write(tot)
  33. })
复制代码

这里的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 不要停~

查看全部评分

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /3 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-20 03:31

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