javascript - promise 使用的疑問
高洛峰
高洛峰 2017-05-19 10:17:46
0
2
418
function test() {
    return new Promise((resolve, reject)=>{
        resolve(123);
    });
}
test().then((a)=>{
    console.log(a);
}).then(function (b) {
    console.log(b);//这行代码被执行了
});

then的第一個參數方法應該是promise在resolve的情況下執行,可console.log(b)居然被執行了,這是為啥

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
Peter_Zhu

不請自來怒答一記!

在 Promise 中,.then( func ) 会返回一个新的 Promise 实例,这个实例的结果,是把函数体 func 的结果通过执行 Promise.resolve() 得到的。所以在你的问题里,console.log(a) 没有返回值,相当于 Promise.resolve(null) 得到一个状态为 resolved 的 Promise 實例,所以就會繼續執行下一步了。

關於 Promise,推薦你看我的教學:Promise 的 N 種用法 裡面有非常詳細的講解,基本上能回答關於 Promise 的所有問題。

为情所困

.then(參數1,參數2) 參數1是成功的回呼函數(resolve()),參數2是失敗的回呼函數(reject()),由於你在這裡的寫法,第二個後面的.then (第一個函數) ,都會被執行,並且印出b的值為undefined,大概就是這樣! !

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板