Dwi*_*Ash 21 javascript events dom javascript-events
有没有办法在JavaScript中实现事件驱动编程,而不涉及任何DOM元素?比如创建一个事件处理程序,每当数组被排序时执行该事件处理程序.
Dom*_*nic 39
当然!您要查找的关键字是"pubsub".以下是一些众所周知的实现:
但你也可以自己做,如下:
window.pubsub = (function () {
var eventToListeners = {};
return {
sub: function (event, callback) {
if (!eventToListeners.hasOwnProperty(event)) {
eventToListeners[event] = [];
}
eventToListeners[event].push(callback);
},
pub: function (event, args) {
if (eventToListeners.hasOwnProperty(event)) {
for (var i = 0; i < eventToListeners[event].length; ++i) {
try {
eventToListeners[event][i].call(null, args);
} catch (e) {
if (console && console.error) {
console.error(e);
}
}
}
}
}
};
}());
// Sample usage:
pubsub.sub("arraySorted", function () {
console.log("array was sorted");
});
var myArray = [2, 3, 1];
myArray.sort();
pubsub.pub("arraySorted");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6526 次 |
| 最近记录: |