我們經(jīng)常會(huì)遇到這樣的面試題
Promise.resolve('foo')
.then(Promise.resolve('bar'))
.then(function(result){
console.log(result)
})
當(dāng)然蛾号,輸出的結(jié)果為foo
唇聘。問(wèn)其原因懈词,答案如題——Promise值穿透
解釋:.then 或者 .catch 的參數(shù)期望是函數(shù)童叠,傳入非函數(shù)則會(huì)發(fā)生值穿透。
另外再看下面代碼
Promise.resolve(1)
.then(function(){return 2})
.then(Promise.resolve(3))
.then(console.log)
輸出結(jié)果: 2
Promise.resolve(1)
.then(function(){return 2})
.then(function(){return Promise.resolve(3)})
.then(console.log)
輸出結(jié)果: 3
解釋: Promise方法鏈通過(guò)return傳值方椎,沒有return就只是相互獨(dú)立的任務(wù)而已