diff options
| author | Aaron Bohy <aab@odoo.com> | 2016-05-03 14:28:31 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2016-05-04 15:06:20 +0200 |
| commit | befbdcb935353e965be82b3c6c6cfe048283d6e8 (patch) | |
| tree | 1e954c6e57d32783fd2116725f40cf98be307d0c /addons/web/static/src/js/framework/utils.js | |
| parent | 782a4466febda566f871ecf23000526893c2febd (diff) | |
[ADD] web: some deferred utils
Diffstat (limited to 'addons/web/static/src/js/framework/utils.js')
| -rw-r--r-- | addons/web/static/src/js/framework/utils.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/addons/web/static/src/js/framework/utils.js b/addons/web/static/src/js/framework/utils.js index 8d8d8dab6ee..c19733989b5 100644 --- a/addons/web/static/src/js/framework/utils.js +++ b/addons/web/static/src/js/framework/utils.js @@ -416,6 +416,45 @@ var DropMisordered = Class.extend({ }, }); +var DropPrevious = Class.extend({ + /** + * Registers a new deferred and rejects the previous one + * @param {$.Deferred} the new deferred + * @returns {$.Promise} + */ + add: function (deferred) { + if (this.current_def) { this.current_def.reject(); } + var res = $.Deferred(); + deferred.then(res.resolve, res.reject); + this.current_def = res; + return res.promise(); + } +}); + +/** + * Rejects a deferred as soon as a reference deferred is either resolved or rejected + * @param {$.Deferred} [target_def] the deferred to potentially reject + * @param {$.Deferred} [reference_def] the reference target + * @returns {$.Deferred} + */ +function reject_after(target_def, reference_def) { + var res = $.Deferred(); + target_def.then(res.resolve, res.reject); + reference_def.always(res.reject); + return res.promise(); +} + +/** + * Returns a deferred resolved after 'wait' milliseconds + * @param {int} [wait] the delay in ms + * @return {$.Deferred} + */ +function delay (wait) { + var def = $.Deferred(); + setTimeout(def.resolve, wait); + return def; +} + function swap(array, elem1, elem2) { var i1 = array.indexOf(elem1); var i2 = array.indexOf(elem2); @@ -448,6 +487,9 @@ return { assert: assert, xor: xor, DropMisordered: DropMisordered, + DropPrevious: DropPrevious, + reject_after: reject_after, + delay: delay, swap: swap, }; |
