请讲师解答一下疑惑:讲解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回答
-
第一,then 返回一个 promise 和 then 内部的函数返回 img 并不矛盾,then 的返回和 then 内部函数的返回,要分开。
第二,视频中有一个错误,如你所提到,我早就在本节视频中写了一个问题说明了 https://coding.imooc.com/learn/questiondetail/46166.html
再有问题可继续回复哈。感觉教程有帮助,欢迎给一个好评。
112018-05-20
相似问题