【发布时间】:2013-12-18 16:32:56
【问题描述】:
用额外的功能扩展承诺是一种反模式吗? 我有一个对 Facebook 进行 API 调用的服务示例:
FacebookService
- importFeed(fanPage, sinceDate): Promise
- importComments(fanPage, recursively, sinceDate): Promise
- publishPost(fanPage): Promise
- checkApiStatus(): Promise
这可以重写为
FacebookService
- importFeed(): ExtendedPromise
- importComments(recursively): ExtendedPromise
- publishPost(): ExtendedPromise
- checkApiStatus(): Promise
就这样使用
var service = new FacebookService();
var fanPage = new FanPage(...);
service.importFeed()
.from(fanPage)
.since(new Date(...))
.then(fn, fn);
service.importComments(true)
.from(fanPage)
.then(fn, fn);
这样的实现有什么缺点?
【问题讨论】:
-
什么时候调用会在你的模式中实际执行?
-
如果我明白你在问什么,我认为 jQuery 会做这种事情。例如。
$.ajax返回的 promise 被扩展为支持 XHR 方法。 -
但这也许是多重继承,而不是扩展。它返回继承自 Delayed 和 XHR 的对象。
标签: javascript design-patterns deferred anti-patterns