我们经常会遇到这样的面试题
Promise.resolve('foo')
.then(Promise.resolve('bar'))
.then(function(result){
console.log(result)
})
当然,输出的结果为foo
。问其原因,答案如题——Promise值穿透
解释:.then 或者 .catch 的参数期望是函数,传入非函数则会发生值穿透。
另外再看下面代码
Promise.resolve(1)
.then(function(){return 2})
.then(Promise.resolve(3))
.then(console.log)
输出结果: 2
Promise.resolve(1)
.then(function(){return 2})
.then(function(){return Promise.resolve(3)})
.then(console.log)
输出结果: 3
解释: Promise方法链通过return传值,没有return就只是相互独立的任务而已