移动优先 - 加密缓存成功和失败处理程序

时间:2015-03-11 08:06:55

标签: javascript local-storage method-chaining jsonstore ibm-mobilefirst

在MobileFirst V6.3中,一旦我们调用JSON Store API,就可以使用 .then()&的 .fail()即可。要链接API调用,我们可以使用多个 .then()。让我们说,

WL.JSONStore.startTransaction()
.then(function () {
  var data = [{name: 'carlos'}];
  return WL.JSONStore.get(collectionName).add(data);
})
.then(function () {
  var docs = [{_id: 1, json: {name: 'carlos'}}];
  return WL.JSONStore.get(collectionName).remove(docs);
})
.then(function () {
  return WL.JSONStore.commitTransaction();
})

.fail(function (errorObject) {
  WL.JSONStore.rollbackTransaction()
  .then(function () {
    // Handle rollback success.
  })

  .fail(function () {
    // Handle rollback failure.
  })
});

由于加密缓存API具有自己的API回调方法,如下所示。

WL.EncryptedCache.open(credentials, create_if_none, onCompleteHandler, onErrorHandler);

如何处理加密缓存API链调用类似于JSON Store [避免每个API调用的回调方法]?

如果它不是开箱即用的,那么任何可用的工作都可以实现相同的效果。

一个片段会有所帮助。

1 个答案:

答案 0 :(得分:1)

  • 建议使用JSONStore。
  • 开箱即用不支持链接回调。

这样做的方法是让某人为使用回调的方法实现包装器。如果你坚持这样做,你需要实现这样的东西:

function wrapper() {
   var myVar = $.Deferred();
   Wl.EncryptedCache.open(credentials, create_if_none, myVar.resolve, myVar.reject);
   return myVar;
}

从用户代码:

wrapper.then(
 function() {success flow...},
 function() {failure flow...}
);