JSON存储在检索数据时挂起

时间:2014-12-02 04:57:42

标签: ibm-mobilefirst jsonstore

我们观察到,在某些时候访问JSONStore API会长时间挂起,为了使其正常工作,我们必须再次调用该函数,或者必须将app应用于后台&再次走向前台。

注意:当应用程序遇到此问题时,在我们重新安装应用程序或重新启动设备之前,行为是相同的。

似乎没有任何适当的方案,我们搜索了很多文章,但没有找到任何解决方案,欢迎任何解决方案。

我们在S5和S4等Android设备上观察到此问题。

这是我的代码片段:

function getWidgets(w_id, getWidgetsSuccessCallback, getWidgetsFailureCallback) {

var query = { user_id : w_id };
var options = {};

WL.JSONStore.get(StorageCollections.widgets).find(query, options)
.then(function(arrayResults) {
    var count = arrayResults.length;

    Logger.debug("getWidgets: success, count: " + count);

    ...

    getWidgetsSuccessCallback(widgets);
})
.fail(function(errorObject) {
    Logger.error("getWidgets: failed, error: " + JSON.stringify(errorObject));
    getWidgetsFailureCallback(errorObject);
});}

当一切正常http://pastebin.com/NVP8ycTG

时记录

访问JSON存储时挂起的日志,只有当应用程序被带到后台时才会起作用。再次回到前台http://pastebin.com/eYzx57qC

JSON商店初始化如下

var collections = {
// User
user: {
    searchFields: {
        user_id             : 'string',
        user_name           : 'string',
        first_name          : 'string',
        last_name           : 'string',
    }           
}
}};


// Storage encryption
var options = {};
if (key) {
    options.password = key;
    options.localKeyGen = true;
}

// Open the collection
var promise = WL.JSONStore.init(collections, options)
.then(function() {
    Logger.debug("initializeAppStorage: " + JSON.stringify(collections) + " completed");
    initAppStorageSuccessCallback(true);
    return true;
})
// Handle failure
.fail(function(errorObject) {
    Logger.error("initializeAppStorage: failed, error: " + errorObject.toString());
    initAppStorageFailureCallback(errorObject.toString());
    return false;
});
return promise;

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

function getWidgets(w_id, getWidgetsSuccessCallback, getWidgetsFailureCallback) {

var query = { key : w_id };
var options = {};

WL.JSONStore.get(StorageCollections.widgets).find(query, options)
.then(function(arrayResults) {
    var count = arrayResults.length;

    Logger.debug("getWidgets: success, count: " + count);

    ...

    getWidgetsSuccessCallback(widgets);
})
.fail(function(errorObject) {
    Logger.error("getWidgets: failed, error: " + JSON.stringify(errorObject));
    getWidgetsFailureCallback(errorObject);
});}