【发布时间】:2013-04-09 11:50:29
【问题描述】:
这最初是关于 Worklight 文档的问题,它表明我真正的问题是关于 JQuery 的 Deferred/Promise API 和 promise.then() 函数。
上下文:
5.0.6 JsonRestStore API 的文档提供了使用新 Promise 功能的示例,提供了两种可能的公式。
someFunction.then(
successCallback,
errorCallback,
optionalProgressCallback);
和
someFunction().then(successCallback).fail(errorCallback)
正如 cmets 和 answers 所述,这两种方法似乎实际上是相同的。
我的困惑是JQuery documentation 声明 then() 返回一个“新承诺”。
因此在第二种情况下我们正在编码:
var p1 = someFunction();
var p2 = p1.then(successCallback);
p2.fail(errorCallback);
我还看到人们设置了这样的“链”:
someFunction().then(action2).then(action3).then(action4);
设置一系列异步操作。所以我的问题变成了上面示例中的承诺 p1 和 p2 之间的关系是什么。这与连锁理念有何关系?
--- 编辑参考答案---
感谢 cnandreu:关键点是“错误会沿着承诺链传播,直到找到错误处理程序。”答案是explained nicely here。
【问题讨论】:
-
两段代码的作用相同。
-
@Manolo,功能上我同意,它有效。但实际上发生了什么?不知何故 p1.then(good, error) 与 p1.fail(error) 和 p2.fail(error) 具有相同的效果,p1 和 p2 显然相关 - 如何?
标签: jquery ibm-mobilefirst deferred jsonstore