使用额外功能扩展承诺是一种反模式吗? 我有一个对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);
这种实施的缺点是什么?
答案 0 :(得分:1)
承诺只是界面。任何对象都可以实现API,因此提供了promise功能。
缺点是如果您依赖添加的功能,您的代码将不那么灵活/可组合。其他函数必须知道并返回这样的“扩展承诺”,它们不能只返回任何承诺。