CNode

下面四种 Promise 的用法有何差异?, ( 从 阮一峰微博里面挪过来的)。

问答
Xxushao0305发布于11 年前最后回复11 年前9 回复9418 浏览0 收藏

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)

X
xushao0305#2·11 年前

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

Z
zhangking520#4·11 年前

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

K
klesh#5·11 年前
引用 zhangking520初步来看 1,2,4的效果应该一样吧,3的写法有问题,2个promise实例直接执行了。

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

K
klesh#6·11 年前

2有问题

X
xushao0305#7·11 年前

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

K
klesh#8·11 年前

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

Z
zhangking520#9·11 年前

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

参与回复
登录后即可参与回复。登录