zoukankan      html  css  js  c++  java
  • Promise 及其它 一个不错的解说

    http://www.qingpingshan.com/jb/javascript/180607.html

     1    <script>
     2         var flag = true
     3         var myPromise = new Promise(function(resolve,reject){
     4             if(flag)
     5                 resolve('ok')
     6             else
     7                 reject('no')
     8         })
     9 
    10         var nextPromise = function(prevValue){
    11             console.log(prevValue)
    12             return Promise.resolve({ok:1,v:prevValue})
    13         }
    14 
    15         myPromise
    16         .then(nextPromise)
    17         .then(function(value){
    18             console.log(value)
    19         })
    20         .catch(function(error){
    21             console.error(error)
    22         })
    23 
    24 
    25 
    26     </script>

    加入箭头函数后:

     1    <script>
     2         let flag = true
     3         const myPromise = new Promise((resolve,reject)=>{
     4             if(flag)
     5                 resolve('ok')
     6             else
     7                 reject('no')
     8         })
     9 
    10         const nextPromise = prevValue =>{
    11             console.log(prevValue)
    12             return Promise.resolve({ok:1,v:prevValue})
    13         }
    14 
    15         myPromise
    16         .then(nextPromise)
    17         .then(value => 
    18             console.log(value)
    19         )
    20         .catch(error =>
    21             console.error(error)
    22         )
    23     </script>

    ES7 async 函数版:

     1 <script>
     2 
     3     const myPromise = new Promise((resolve, reject) => {
     4         let backValue = true
     5 
     6         //模拟一个异步耗时操作
     7         setTimeout(()=>{
     8             if(backValue)
     9                 resolve({code:'OK',value:1})
    10             else
    11                 reject(new Error('SOME WORONG HAS HAPPEND!'))
    12         },2000)
    13     })
    14 
    15 
    16     async function nextPromise(prevValue) {
    17         console.log(prevValue)
    18         return Promise.resolve({ ok: 1, v: prevValue })
    19     }
    20 
    21     async function execute() {
    22         try {
    23             //注意await 必须在async 函数里面使用
    24             let prevValue = await myPromise
    25             let nextValue = await nextPromise(prevValue)
    26 
    27             console.log(nextValue)
    28 
    29         } catch (error) {
    30             console.log(error)
    31         }
    32 
    33     }
    34     execute()
    35 
    36 </script>
  • 相关阅读:
    vue 组件轮播联动
    Echarts 解决饼图文字过长重叠的问题
    Echarts 背景渐变柱状图
    vue 组件间数据传递
    vue webpack build 打包过滤console.log()日志
    自定义字段排序
    vue 路由嵌套高亮问题
    微信小程序验证码获取倒计时
    解决小程序里面的图片之间有空隙的问题???
    axios使用
  • 原文地址:https://www.cnblogs.com/xuezizhenchengxuyuan/p/6379195.html
Copyright © 2011-2022 走看看