var p1 = someFunction();
var p2 = p1.then(successCallback);
p2.fail(errorCallback);
所以我的问题变成了上面示例中的承诺 p1 和 p2 之间的关系是什么。这与连锁理念有什么关系?
Promise 是一种处理异步代码的方式,这里有一个简短的视频和文章来解释它们。someFunction()
将执行一个异步任务,当它完成时(即被解决)它执行successCallback
,如果失败(即被拒绝)它执行errorCallback
. 这种关系是p2
一个承诺,只有在p1
被拒绝时才会执行。把p1.then(win, fail)
和想象p1.then(win).fail(fail)
成写同一件事的两种方式。
最初的问题可能是指以下内容:
在调用 JSONStore 异步操作(查找、添加、删除等)后返回一个 Promise 对象。[...] [JSONStore.add, JSONStore.find, etc.] 失败回调,作为 .then 的第二个参数或 .fail 的第一个参数传递,返回一个错误对象,[...]
来自JSONStore 文档。该文档是特定于 JSONStore API 的,我们建议读者参考 jQuery 文档以了解 Promise 的一般工作方式(有关更多详细信息,请参阅 jQuery 的 API 文档。)。
这是一个例子:
var collections = {
people : {
searchFields : {name: 'THIS_SHOULD_PRODUCE_AN_ERROR'}
}
};
WL.JSONStore.init(collections)
.then(function(res){
//the code here should not be called because we expect to fail
console.log(typeof res === 'object' ? JSON.stringify(res) : res);
})
.fail(function(err){
console.log(err.toString());
});
输出是:
{"src":"initCollection","err":-12,"msg":"INVALID_SEARCH_FIELD_TYPES","col":"people","usr":"jsonstore","doc":{},"res":{}}
如果我们切换到.then(success, failure)
:
var collections = {
people : {
searchFields : {name: 'THIS_SHOULD_PRODUCE_AN_ERROR'}
}
};
var success = function(res){
//the code here should not be called because we expect to fail
console.log(typeof res === 'object' ? JSON.stringify(res) : res);
};
var failure = function(err){
console.log(err.toString());
};
WL.JSONStore.init(collections).then(success, failure);
我们得到相同的输出:
{"src":"initCollection","err":-12,"msg":"INVALID_SEARCH_FIELD_TYPES","col":"people","usr":"jsonstore","doc":{},"res":{}}
混合它们,选择一个或使用已弃用的回调。文档中的所有 JSONStore 示例都应按预期工作。请使用文档中的真实引用和一个表明文档错误的真实示例来更新您的问题,我将更新我的答案。如果事实证明有问题,我会尽一切可能修复它。