如何设计一个具有承诺的成员函数的类

时间:2013-12-12 00:36:49

标签: node.js asynchronous promise

在node.js中,我一直在使用promises,Q和deferred。 我也有自定义对象。

我想要一个调用return promises的自定义对象,一个用于DO命令,另一个用于UNDO命令。

如何定义作为承诺的成员函数?

1 个答案:

答案 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的信息。如果有任何帮助的话。

希望有了您的更多信息,我可以解决您的具体架构。