请讲师解答一下疑惑:讲解promise标准的时候,似乎前后有些矛盾,对then返回的必须是一个promise实例存疑

来源:4-22 promise - 标准总结

慕粉18380451249

2018-05-20

//讲解视频时间在10:00处
//then返回的必须是一个promise实例?
//情况1:如果没有显示的返回promise,第二个then接收的参数是undefined,而不是和第一个then一样可以获取img
//此时第二个then跟result没有什么关系,而不是视频讲中所讲没有指名返回哪个promises实例,他就返回本身的promise实例
result.then(function (img) {
console.log(1, img.width)
}, function () {
console.log('error 1')
}).then(function (img) {
console.log(2, img) // img是undefined,而不是img,跟result没有关系
})
//如果不通过链式调用,就可以生效
result.then(function (img) {
console.log(1, img.width)
}, function () {
console.log('error 1')
})
result.then(function (img) {
console.log(2, img.height) // 可以获取img
})
//情况二:then返回的可以不是一个promise实例
result.then(function (img) {
console.log(1, img.width)
 return img // 必须返回,否则第二个then接收不到
}, function () {
console.log('error 1')
}).then(function (img) {
console.log(2, img) // 此时可以接收到第一个then返回的img,而不是promise
})

请问讲师以上怎么理解,尤其是then返回的必须是一个promise,而明明有时候并不是,例如返回的img



写回答

1回答

双越

2018-05-20

第一,then 返回一个 promise 和 then 内部的函数返回 img 并不矛盾,then 的返回和 then 内部函数的返回,要分开。

第二,视频中有一个错误,如你所提到,我早就在本节视频中写了一个问题说明了 https://coding.imooc.com/learn/questiondetail/46166.html 


再有问题可继续回复哈。感觉教程有帮助,欢迎给一个好评。

1
1
慕粉18380451249
非常感谢!
2018-05-20
共1条回复

前端跳槽必备 一线互联网公司高级前端JavaScript面试

视频讲解前端面试中的JS高级知识点,扩展JS知识深度,从容面试

1621 学习 · 218 问题

查看课程