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>
原文地址:https://www.cnblogs.com/xuezizhenchengxuyuan/p/6379195.html