diff options
author | Andrew Dolgov <[email protected]> | 2013-03-18 10:26:24 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-03-18 10:26:26 +0400 |
commit | f0cfe83e3725f9a3928da97a6e3085e79cb25309 (patch) | |
tree | 4b0af188defaa807c7bc6ff3a101b41c9166c463 /lib/dojo/request/notify.js.uncompressed.js | |
parent | 9a2885da170ffd64358b99194095851a2d09c1b6 (diff) |
upgrade dojo to 1.8.3 (refs #570)
Diffstat (limited to 'lib/dojo/request/notify.js.uncompressed.js')
-rw-r--r-- | lib/dojo/request/notify.js.uncompressed.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/lib/dojo/request/notify.js.uncompressed.js b/lib/dojo/request/notify.js.uncompressed.js new file mode 100644 index 000000000..2b8a2b68b --- /dev/null +++ b/lib/dojo/request/notify.js.uncompressed.js @@ -0,0 +1,74 @@ +define("dojo/request/notify", ['../Evented', '../_base/lang', './util'], function(Evented, lang, util){ + // module: + // dojo/request/notify + // summary: + // Global notification API for dojo/request. Notifications will + // only be emitted if this module is required. + // + // | require('dojo/request', 'dojo/request/notify', + // | function(request, notify){ + // | notify('load', function(response){ + // | if(response.url === 'someUrl.html'){ + // | console.log('Loaded!'); + // | } + // | }); + // | request.get('someUrl.html'); + // | } + // | ); + + var pubCount = 0, + slice = [].slice; + + var hub = lang.mixin(new Evented, { + onsend: function(data){ + if(!pubCount){ + this.emit('start'); + } + pubCount++; + }, + _onload: function(data){ + this.emit('done', data); + }, + _onerror: function(data){ + this.emit('done', data); + }, + _ondone: function(data){ + if(--pubCount <= 0){ + pubCount = 0; + this.emit('stop'); + } + }, + emit: function(type, event){ + var result = Evented.prototype.emit.apply(this, arguments); + + // After all event handlers have run, run _on* handler + if(this['_on' + type]){ + this['_on' + type].apply(this, slice.call(arguments, 1)); + } + return result; + } + }); + + function notify(type, listener){ + // summary: + // Register a listener to be notified when an event + // in dojo/request happens. + // type: String? + // The event to listen for. Events emitted: "start", "send", + // "load", "error", "done", "stop". + // listener: Function? + // A callback to be run when an event happens. + // returns: + // A signal object that can be used to cancel the listener. + // If remove() is called on this signal object, it will + // stop the listener from being executed. + return hub.on(type, listener); + } + notify.emit = function(type, event, cancel){ + return hub.emit(type, event, cancel); + }; + + // Attach notify to dojo/request/util to avoid + // try{ require('./notify'); }catch(e){} + return util.notify = notify; +}); |