diff --git a/lib/client/edit.js b/lib/client/edit.js index 1be824f9..a3bf3c0c 100644 --- a/lib/client/edit.js +++ b/lib/client/edit.js @@ -13,6 +13,7 @@ var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuI join = CloudCmd.join, + PromiseConfig, Menu, Value, Edit = this, @@ -25,7 +26,7 @@ var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuI RESTful = DOM.RESTful, Dialog = DOM.Dialog, Images = DOM.Images, - Element, JSHintConfig, EditConfig, + Element, JSHintConfig, ConfigView = { beforeClose: function() { isChanged(); @@ -146,7 +147,7 @@ var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuI } function setEmmet(isHTML) { - getEditConfig(function(config) { + getEditConfig(function(error, config) { var extensions = config.extensions, isEmmet = extensions.emmet; @@ -222,7 +223,7 @@ var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuI ace.require('ace/ext/language_tools'); Modelist = ace.require('ace/ext/modelist'); - getEditConfig(function(config) { + getEditConfig(function(error, config) { var options = config.options; Ace.setOptions(options); @@ -357,21 +358,24 @@ var CloudCmd, Util, DOM, CloudFunc, ace, DiffProto, diff_match_patch, Zip, MenuI } function getEditConfig(callback) { - var prefix = CloudCmd.PREFIX, + Util.checkArgs(arguments, ['callback']); - CONFIG_PATH = prefix + '/json/edit.json', - func = Util.exec.ret(callback); - - Util.exec.if(EditConfig, function() { - func(EditConfig); - }, function() { - DOM.load.ajax({ - url : CONFIG_PATH, - success : function(data) { - EditConfig = data; - func(EditConfig); - } + if (!PromiseConfig) + PromiseConfig = new Promise(function(resolve, reject) { + var prefix = CloudCmd.PREFIX, + url = '/json/edit.json'; + + DOM.load.ajax({ + url : prefix + url, + success : resolve, + error : reject + }); }); + + PromiseConfig.then(function(data) { + callback(null, data); + }, function(error) { + callback(error); }); }