diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2012-11-14 22:37:21 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2012-11-14 22:37:21 +0100 |
commit | 9b8375cf2c328cfcb66dae8283cfcacdaeb242c2 (patch) | |
tree | cedf41e1d4d0fdf52e05fbcdf563aa493beef128 /core | |
parent | 8b03b683dfc3d612fcc72f404f2dac19d06e203f (diff) | |
download | nextcloud-server-9b8375cf2c328cfcb66dae8283cfcacdaeb242c2.tar.gz nextcloud-server-9b8375cf2c328cfcb66dae8283cfcacdaeb242c2.zip |
Prevent ajax race conditions when using routes by offering a callback that is run after the the routes have finished loading
Diffstat (limited to 'core')
-rw-r--r-- | core/js/router.js | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/core/js/router.js b/core/js/router.js index 8b66f5a05c5..02c8d11e695 100644 --- a/core/js/router.js +++ b/core/js/router.js @@ -1,17 +1,30 @@ OC.router_base_url = OC.webroot + '/index.php/', OC.Router = { + loadedCallback: null, + // register your ajax requests to load after the loading of the routes + // has finished. otherwise you face problems with race conditions + registerLoadedCallback: function(callback){ + if(this.routes_request.state() === 'resolved'){ + callback(); + } else { + this.loadedCallback = callback; + } + }, routes_request: $.ajax(OC.router_base_url + 'core/routes.json', { dataType: 'json', success: function(jsondata) { - if (jsondata.status == 'success') { + if (jsondata.status === 'success') { OC.Router.routes = jsondata.data; + if(OC.Router.loadedCallback !== null){ + OC.Router.loadedCallback(); + } } } }), generate:function(name, opt_params) { if (!('routes' in this)) { if(this.routes_request.state() != 'resolved') { - alert('wait');// wait + alert('To avoid race conditions, please register a callback');// wait } } if (!(name in this.routes)) { |