Angular链中的可选第一个承诺

时间:2015-06-24 20:43:40

标签: angularjs angular-promise

我有2个$ http调用返回promises,但第一个是可选的。我相信我必须首先使用$q.defer()创建一个承诺,但我遗漏了一些东西。

这是我的非工作尝试:

var p = $q.defer();
if (condition) {
  p = p.then(doOptionalFirst());
}  
return p.then(doOther());

使用第一个是可选的链接这两个调用的正确语法是什么?

1 个答案:

答案 0 :(得分:5)

使用$q.when(或$q.resolve与AngularJS 1.4.1)创建已解决的承诺。

var p = $q.resolve();
if (condition) {
    p = p.then(doOptionalFirst);
}
return p.then(doOther);

如果您使用延期,则必须链接到.promise,然后在适当的时间解决延迟。在这种情况下,您可以考虑如果condition为真,则自动解决延迟。因此,您可以通过使用已经解决的承诺来跳过一些额外的可能令人困惑的代码。