使用Angularjs返回两个承诺,如何链接所以UI具有$ scope

时间:2016-04-08 15:44:55

标签: javascript angularjs promise angular-promise http-get

我的用户界面正在破坏,因为我的第二个承诺在第一个承诺中依赖于无法快速解决的承诺。因此,我接受了第二个承诺并将其嵌入第一个承诺中,如此:

SyntaxNode newRoot = oldRoot.RemoveNode(oldNode.Single().Parent, SyntaxRemoveOptions.KeepNoTrivia);

这样做了,但我相信最好的做法是将两个“然后”连在一起。这是真的,如果是这样,有人可以重构我的代码示例来显示这个吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在您的示例中,您可以单独调用这两个方法,因为函数调用的关闭可以使用setID但如果您只想在csRepo.getInfoInSet之后调用csRepo.getSet,则可以执行此操作像这样:

 csRepo.getSet(setID).then(
    function (val) {
        $scope.dataSet= val;
        return setID;
    })
    .then(csRepo.getInfoInSet)
    .then(function (val) {
       $scope.dataSet.InfoOfSet = val;
    })
    .catch(function (reason) {
       throw reason;
    })

您不需要每次都致电$scope.$apply,因为它也会影响性能。您可以使用$q.all并行调用这两种方法并合并承诺。请参阅:https://docs.angularjs.org/api/ng/service/ $ q