下面四种 Promise 的用法有何差异?, ( 从 阮一峰微博里面挪过来的)。
发布于 6 年前 作者 xushao0305 7319 次浏览 最后一次编辑是 5 年前 来自 问答

doSomething.then(function(){ return doSomethingElse(); }).then(//)

doSomething.then(function(){ doSomethingElse(); }).then(//)

doSomething.then(doSomethingElse()) .then(//)

doSomething().then(doSomethingElse) .then(//) doSomething & doSomethingElse both promise object

9 回复

@booxood 主要是里面给的结果没怎么看懂。

@booxood 好赞的一篇文章

初步来看 1,2,4的效果应该一样吧,3的写法有问题,2个promise实例直接执行了。

@zhangking5202有问题,会导致最后的then跟doSomethingElse同时执行。其它是一样的。3执行后返回promise对象,其实跟4是一样的。 楼主代码没抄好。看得我一头烟。doSomeThing后面要有括号,不然是要报错的

@klesh 写的时候没注意,见谅哈

补充一下:1,3,4执行顺序是一样的,其中,1跟4是完全等效。3的 doSomethingElse() 相当于一个子操作,虽然上层的下一个 then 会等到它执行完毕再继续,但不影响上层链的结果传递,也无法将值传到上层的下一个 then。

@klesh 说的没错,2没有返回值的确有问题,无法向下传递,2,3都是错误的写法。

回到顶部