Promise的then方法


then 方法 then是對象上面的一個方法。它其實是放在 Promise.prototype.then

1:同一個Promise可以調用多次then方法

2:then方法傳入的回調函數可以有返回值,返回值是一個新的Promise,具體返回的類型類似於resolve參數

返回值是一個新的Promise時間上是這樣一個過程:new Promise(resolve=>{resolve(x)} 會自動執行resolve這塊

具體實現看代碼

 1 //Promise有哪些對象方法
 2 // console.log(Object.getOwnPropertyDescriptors(Promise.prototype));
 3 const promise = new Promise((resolve, reject) => {
 4         resolve('hahahahha')
 5     })
 6     //1:同一個Promise 可以多次調用then方法
 7     //當resolve方法被回調時,所有的then方法傳入的回調函數都會被調用
 8 promise.then((res) => {
 9     console.log('res1:', res);
10 })
11 promise.then((res) => {
12         console.log('res2:', res);
13     })
14     //2:then方法傳入的回調函數可以有返回值,返回值是Promise
15     //1>返回的是一個普通的值(數值、字符串、普通對象、undefined),這個值作為新的Promise的resolve值
16 promise.then(res => {
17 
18         console.log('原來Promise的res', res);
19         return 'aaaaa'
20     }).then(res => {
21         console.log('新的Promise的then里面的res', res);
22         return 'bbbbbb'
23     }).then(res => {
24         console.log('鏈式調用', res);
25     }).then(res => {
26         console.log('沒有返回值拿到的res:', res);
27     })
28     //2>返回的是Promise 狀態由這個新的Promise 決定
29 promise.then(res => {
30 
31         console.log('原來Promise的res', res);
32         return new Promise((resolve, reject) => {
33             setTimeout(() => {
34                 resolve(1111)
35             }, 3000)
36         })
37     }).then(res => {
38         console.log('新的Promise的then里面的res', res);
39     })
40     //3>返回的是一個對象 並且改對象有then方法 那么會執行改then方法,並根據then方法的結果來決定Promise的狀態
41 promise.then(res => {
42 
43     console.log('原來Promise的res', res);
44     const obj = {
45         then: function(resolve, reject) {
46             resolve('我是對象里面的then')
47         }
48     }
49     return obj
50 }).then(res => {
51     console.log('新的Promise的then里面的res', res);
52 })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM