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>
  • 相关阅读:
    一个请求在Struts2框架中的处理流程
    最大公约数和最小公倍数--java实现
    项目技术总结
    项目学习经验
    MyEclipse Project Migration功能中文简单介绍
    RSA的傻瓜原理
    Class.forName()的作用
    matplotlib 画封闭图像并填充
    matplotlib 做图通过弹出窗口展示 spyder
    pyodbc 一些内容
  • 原文地址:https://www.cnblogs.com/xuezizhenchengxuyuan/p/6379195.html
Copyright © 2011-2022 走看看