我在浏览器中使用RSVP.js lib。
我有一个承诺applicationReady
我有另一个承诺loadSomeData
我有最后的承诺,configureUI
每个人都依赖于之前的承诺来完成它的工作。如何让这三个承诺连续运行?我显然遗漏了一些东西。
谢谢!
SOLUTION:
好的,这是答案:
不起作用:
applicationReady
.then(loadSomeData)
.then(configureUI)
工作:
applicationReady
.then(function() { return loadSomeData; })
.then(function() { return configureUI; })
promise和返回promise的函数之间存在差异。对then()
没有弄明白这一点感到遗憾。那么(承诺)的用例是什么?
答案 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; })
承诺和返回承诺的函数之间存在差异。