在node.js中,我一直在使用promises,Q和deferred。 我也有自定义对象。
我想要一个调用return promises的自定义对象,一个用于DO命令,另一个用于UNDO命令。
如何定义作为承诺的成员函数?
答案 0 :(得分:2)
这应该是一个简单的函数返回一个promise,或者在你的情况下是一个集合中的两个promise。听起来像一个可撤销的功能工厂?
我不清楚你在这种情况下的命令是什么意思,但我怀疑但不介意你进一步解释你的需求。
我可以谈谈我们在MontageJS中使用promises注册撤消/重做操作的方法。
https://github.com/montagejs/montage/blob/master/core/undo-manager.js
简而言之,我们在调用时为每个可撤消方法注册撤消操作,当“我们知道如何实际撤消”时,“实际执行撤消操作的操作”的有效负载存储为要解决的承诺
我们采用的方法是,每个可撤销的API都负责报告如何使用与某些现有系统相当的其他API来撤消自身,但不同于具有唯一的撤消和重做功能。
API:
undoManager.register(label, operationPromise)
撤消异步操作的设计示例:
addRandomNumber: {
var deferredUndo,
self = this;
this.undoManager.register("Add Random", deferredUndo.promise);
return this.randomNumberGeneratorService.next().then(function(rand) {
deferredUndo.resolve(["Add " + rand, self.subtract, self, rand];
var result = self.total = self.total + number;
return result
});
}
jsdocs应该有更多关于我们如何管理undos的信息。如果有任何帮助的话。
希望有了您的更多信息,我可以解决您的具体架构。