朴灵的 EventProxy, README 里有个例子:
var proxy = new EventProxy();
var render = function (template, data, l10n){
_.template(template, data);
};
proxy.assign("template", "data", "l10n", render);
$.get("template", function (template) {
// something
proxy.trigger("template", template);
});
$.get("data", function (data) {
// something
proxy.trigger("data", data);
});
$.get("l10n", function (l10n) {
// something
proxy.trigger("l10n", l10n);
});
第一反应,用 seajs 等模块加载器会非常简单:
var render = function (template, data, l10n){
_.template(template, data);
};
seajs.use(["path/to/template", "path/to/data", "path/to/l10n"], function(template, data, l10n) {
render(template, data, l10n);
});
如果不是文件下载,而是其他一些什么操作,比如:
function done(a, b, c) { ... }
doSomething('A', function(a) {
doSomething('B', function(b) {
doSomething('C', function(c) {
done(a, b, c);
});
});
});
不用 eventproxy, 利用普通的 events 模型,也挺容易写的:
function done(a, b, c) { ... }
var eventObj = new Events();
doSomething('A', function(a) {
eventObj.trigger('step', a);
});
doSomething('B', function(b) {
eventObj.trigger('step', b);
});
doSomething('C', function(c) {
eventObj.trigger('step', c);
});
var data = [];
var global = this;
eventObj.on('step', function(o) {
data.push(o);
if (data.length === 3) {
done.apply(global, data);
}
});
我好像没看到 EventProxy 的更大价值-.-
朴灵能再详细介绍介绍么?
你好,我写了一个事件管理的库,能满足我之前提到的需求,就是多个异步任务流互相依赖,我的用法如下
源码见这里:https://gist.github.com/2643056
你看这个库实用吗,有没有意义。