【发布时间】:2014-04-30 22:59:56
【问题描述】:
我想有条件地执行异步函数,但我认为我缺少正确的语法来表达我想要的。
this.doUpToThreeThings = function(skipTheMiddleStep) {
return doFirstThing().then(function (result) {
if (skipTheMiddleStep) {
return doThirdThing();
} else {
return doSecondThing();
}
}).then(function (result) {
if (skipTheMiddleStep) {
return "ok"; // return what?
} else {
return doThirdThing();
}
});
}
当我们到达第二个时,我不知道第一个块是否做了中间步骤,所以我不得不重复这个条件。第二个块读起来很奇怪:它应该说,如果跳过中间步骤,那么做第三件事,但既然我们知道前一个块肯定做了第三件事,它就返回。所以我必须重复这个条件,然后在第二个中编写看起来很错误的代码。
我意识到我可以编写一个名为 doSecondAndThirdThings 的函数,然后从第一个块的条件中调用它,但这并不是真正的 DRY,它只是隐藏了非 DRY 特性。 (或者也许我错了?)
另外,我仍然对在那个“ok”分支上返回一个完整的承诺感到有点困惑。是这样吗,还是我应该说像解决? -- 谢谢
【问题讨论】:
-
如果投反对票的人愿意解释投票,我会解决问题或将其删除。
-
我不知道为什么投反对票,但我会说我不明白你在问什么。我没有从您共享的代码中“看到问题”;我只是很困惑。因此,我不明白您要解决什么问题。对promise对象考虑的不多,所以理解的问题可能是我自己。
-
@JeffryHouser - 谢谢。我已尽力澄清。
-
您的问题在第一次迭代中也很好而且很清楚。我认为投反对票的人根本不理解它。
标签: angularjs promise angular-promise