-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
If Future will pass event object as a first parameter to callback
EventTarget.prototype.once = function(eventType, options) {
var self = this;
return new Future(function (resolver) {
self.on(eventType, options, function(event)) {
resolver.accept(event);
});
});
};I suggest this:
EventTarget with DOM Future someway, somehow, should support handleEvent. Right now I can write:
var model = {
handleEvent: function(e) {
var handlerName = "$" + e.type;
if( handlerName in this ) {
return this[handlerName](e);
}
}
, $click: function(e) {
console.log(e.type)
}
, $mouseover: function(e) {
console.log(e.type)
}
, init: function(node) {
for( var eventName in this ) {
if( eventName[0] == "$" ) {
node.addEventListener(eventName.substr(1), this);
}
}
}
}
model.init(document.find(".some_node"));or
var xhrController = {
handleEvent: function(e) {
switch(e.type) {
case "load":
//do something
break;
case "abort":
//do something
break;
default:
console.log(e.type, e);
}
}
, init: function(xhr, url) {
this.xhr = xhr;
this.url = url;
["load", "error", "abort", "loadend", "loadstart", "progress", "timeout"].forEach(function(name) {
xhr.addEventListener(name, this);
}, this);
}
, send: function(data) {
xhr.open("POST", this.url);
xhr.send(data);
}
}
xhrController.init(new XMLHttpRequest({anon: true}), "//example.com/");or even
var rootClickEvents = [];
document.addEventListener("click", rootClickEvents);
//somewhere in script
rootClickEvents.handleEvent = function(e) {
this.forEach(function(handler) {
handler.call(e.currentTarget, e);
})
}
//...
rootClickEvents.push(function(e) {
console.log(e.type, e);
});In DOMFuture proposal it doesn't even mention the handleEvent.
I think event object should contains a Future/Promise state information.
Metadata
Metadata
Assignees
Labels
No labels