From 31e2931ccf5fda531b137ffbf6044fe4c6814479 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 29 Jun 2017 02:00:53 +0200 Subject: [PATCH] Add callback function to load method --- src/editor/model/Editor.js | 11 +++++++---- src/storage_manager/index.js | 5 +++-- src/storage_manager/model/LocalStorage.js | 6 +++++- src/storage_manager/model/RemoteStorage.js | 6 +++++- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/editor/model/Editor.js b/src/editor/model/Editor.js index cbd4baa44..b351cb3c3 100644 --- a/src/editor/model/Editor.js +++ b/src/editor/model/Editor.js @@ -439,7 +439,7 @@ module.exports = Backbone.Model.extend({ * @private */ load(clb) { - var result = this.getCacheLoad(1); + var result = this.getCacheLoad(1, clb); this.get('storables').forEach(m => { m.load(result); }); @@ -449,10 +449,11 @@ module.exports = Backbone.Model.extend({ /** * Returns cached load * @param {Boolean} force Force to reload + * @param {Function} clb Callback function * @return {Object} * @private */ - getCacheLoad(force) { + getCacheLoad(force, clb) { var f = force ? 1 : 0; if(this.cacheLoad && !f) return this.cacheLoad; @@ -471,8 +472,10 @@ module.exports = Backbone.Model.extend({ }); }); - this.cacheLoad = sm.load(load); - this.trigger('storage:load', this.cacheLoad); + this.cacheLoad = sm.load(load, (loaded) => { + clb && clb(loaded); + this.trigger('storage:load', loaded); + }); return this.cacheLoad; }, diff --git a/src/storage_manager/index.js b/src/storage_manager/index.js index a8289c6a7..24cccdb56 100644 --- a/src/storage_manager/index.js +++ b/src/storage_manager/index.js @@ -196,6 +196,7 @@ module.exports = () => { /** * Load resource from the current storage by keys * @param {string|Array} keys Keys to load + * @param {Function} clb Callback function * @return {Object|null} Loaded resources * @example * var data = storageManager.load(['item1', 'item2']); @@ -203,7 +204,7 @@ module.exports = () => { * var data2 = storageManager.load('item1'); * // data2 -> {item1: value1} * */ - load(keys) { + load(keys, clb) { var st = this.get(this.getCurrent()); var keysF = []; var result = {}; @@ -214,7 +215,7 @@ module.exports = () => { for (var i = 0, len = keys.length; i < len; i++) keysF.push(c.id + keys[i]); - var loaded = st ? st.load(keysF) : {}; + var loaded = st ? st.load(keysF, clb) : {}; // Restore keys name for (var itemKey in loaded){ diff --git a/src/storage_manager/model/LocalStorage.js b/src/storage_manager/model/LocalStorage.js index 4255010ff..ec8c68875 100644 --- a/src/storage_manager/model/LocalStorage.js +++ b/src/storage_manager/model/LocalStorage.js @@ -23,7 +23,7 @@ module.exports = Backbone.Model.extend({ /** * @private */ - load(keys) { + load(keys, clb) { this.checkStorageEnvironment(); var result = {}; @@ -33,6 +33,10 @@ module.exports = Backbone.Model.extend({ result[keys[i]] = value; } + if (typeof clb == 'function') { + clb(result); + } + return result; }, diff --git a/src/storage_manager/model/RemoteStorage.js b/src/storage_manager/model/RemoteStorage.js index cfb7340cf..0ecf7b021 100644 --- a/src/storage_manager/model/RemoteStorage.js +++ b/src/storage_manager/model/RemoteStorage.js @@ -42,7 +42,7 @@ module.exports = Backbone.Model.extend({ /** * @private */ - load(keys) { + load(keys, clb) { var result = {}, fd = {}, params = this.get('params'); @@ -61,6 +61,10 @@ module.exports = Backbone.Model.extend({ method: 'GET', }).done(d => { result = d; + }).always((res) => { + if (typeof clb == 'function') { + clb(res); + } }); return result; },