【发布时间】:2013-10-18 02:01:57
【问题描述】:
我在设计一个通过回调公开其操作的类时遇到了麻烦。是的,我的方法对我有用,但似乎也太复杂了。
为了说明问题,我画了下图。希望对您了解类/模型有用。
在我的方法中,我使用了一些包含用户定义回调函数的数组。
....
rocket.prototype.on = function(eventName, userFunction) {
this.callbacks[eventName].push(userFunction);
}
rocket.prototype.beforeLunch = function(){
userFunctions = this.callbacks['beforeLunch']
for(var i in userFunctions)
userFunctions[i](); // calling the user function
}
rocket.prototype.lunch = function() {
this.beforeLunch();
...
}
....
var myRocket = new Rocket();
myRocket.on('beforeLunch', function() {
// do some work
console.log('the newspaper guys are taking pictures of the rocket');
});
myRocket.on('beforeLunch', function() {
// do some work
console.log('some engineers are making last checks ');
});
我想知道最常用的方法是什么。我想我可以使用 Promise 或其他库来使这个实现更容易理解。在这张幻灯片中,使用回调被认为是邪恶的。 http://www.slideshare.net/TrevorBurnham/sane-async-patterns
那么,我应该使用诸如 promise 之类的库还是继续改进我的方法?
【问题讨论】:
-
我不明白你真正想要做什么。动画?还是那张图片描述了你的世界模型?
-
我编辑问题。现在更清楚了。
-
我不会将 Javascript 用于任何危及人们生命的重要软件。
-
这只是一个例子来说明我的问题。
标签: javascript callback promise jquery-deferred deferred