我怎么然后()承诺?

时间:2014-10-15 21:29:02

标签: promise rsvp.js rsvp-promise

我在浏览器中使用RSVP.js lib。

我有一个承诺applicationReady

我有另一个承诺loadSomeData

我有最后的承诺,configureUI

每个人都依赖于之前的承诺来完成它的工作。如何让这三个承诺连续运行?我显然遗漏了一些东西。

谢谢!

SOLUTION:

好的,这是答案:

不起作用:

applicationReady
.then(loadSomeData)
.then(configureUI)

工作:

applicationReady
.then(function() { return loadSomeData; })
.then(function() { return configureUI; })

promise和返回promise的函数之间存在差异。对then()没有弄明白这一点感到遗憾。那么(承诺)的用例是什么?

2 个答案:

答案 0 :(得分:1)

  

我有一个承诺,我有另一个承诺,我有最后的承诺。   每个人都依赖于之前的承诺来完成它的工作。

这没有任何意义。如果您已经有了承诺,那就意味着您已经启动了所有三个流程,这些流程您现在掌握着未来的成果。这个过程是否依赖于其他承诺(或不承担责任)不在你的责任范围内 - 你只有结果。

  

如何让这三个承诺连续发布?

你无法“运行”一个承诺。承诺只代表结果。你可以运行一个函数。通过说“依赖于以前的工作”,你的意思是将前一个承诺的结果传递给要运行的函数(并创建下一个“依赖”承诺)作为参数 - 而这正是.then()所做的

  

那么(承诺)的用例是什么?

没有。如果您没有传递函数,then什么都不做。

答案 1 :(得分:0)

好的,这里的答案是:

不起作用:

applicationReady
.then(loadSomeData)  // loadSomeData is a promise
.then(configureUI)   // configureUI is a promise

工作:

applicationReady
.then(function() { return loadSomeData; })
.then(function() { return configureUI; })

承诺和返回承诺的函数之间存在差异。