下面四种 Promise 的用法有何差异?, ( 从 阮一峰微博里面挪过来的)。
发布于 10 年前 作者 xushao0305 9214 次预览 最后一次回复是 10 年前 来自 问答
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 回复
不是给了那篇文章的链接吗? http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html?utm_source=javascriptweekly&utm_medium=email
@booxood 主要是里面给的结果没怎么看懂。
@booxood 好赞的一篇文章
初步来看 1,2,4的效果应该一样吧,3的写法有问题,2个promise实例直接执行了。
@zhangking5202有问题,会导致最后的then跟doSomethingElse同时执行。其它是一样的。3执行后返回promise对象,其实跟4是一样的。 楼主代码没抄好。看得我一头烟。doSomeThing后面要有括号,不然是要报错的
2有问题
@klesh 写的时候没注意,见谅哈
补充一下:1,3,4执行顺序是一样的,其中,1跟4是完全等效。3的 doSomethingElse() 相当于一个子操作,虽然上层的下一个 then 会等到它执行完毕再继续,但不影响上层链的结果传递,也无法将值传到上层的下一个 then。
@klesh 说的没错,2没有返回值的确有问题,无法向下传递,2,3都是错误的写法。