我的用户界面正在破坏,因为我的第二个承诺在第一个承诺中依赖于无法快速解决的承诺。因此,我接受了第二个承诺并将其嵌入第一个承诺中,如此:
SyntaxNode newRoot = oldRoot.RemoveNode(oldNode.Single().Parent, SyntaxRemoveOptions.KeepNoTrivia);
这样做了,但我相信最好的做法是将两个“然后”连在一起。这是真的,如果是这样,有人可以重构我的代码示例来显示这个吗?谢谢!
答案 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