我有点困惑如何做到这一点。这是我所拥有的:

resolve: {
   objectiveDetailsExam: ['objectiveDetailService', 'subjectService',
      function (objectiveDetailService: IObjectiveDetailService, subjectService: ISubjectService) {
         objectiveDetailService.getObjectiveDetailsExam("/" + subjectService.subject.id)
            .then((results): ng.IPromise<any> => {
               return objectiveDetailService.getObjectiveDetailsObjective("/" + objectiveDetailService.examId);
                            });
                    }]
        }


或者应该是在ObjectiveDetailService.getObjectiveDetailsExam之前带有return的:

resolve: {
   objectiveDetailsExam: ['objectiveDetailService', 'subjectService',
      function (objectiveDetailService: IObjectiveDetailService, subjectService: ISubjectService) {
         return objectiveDetailService.getObjectiveDetailsExam("/" + subjectService.subject.id)
            .then((results): ng.IPromise<any> => {
               return objectiveDetailService.getObjectiveDetailsObjective("/" + objectiveDetailService.examId);
                            });
                    }]
            }


两者实际上似乎都可以正常工作,并且随着调用快速执行,我看不到哪个是正确的。

有人可以建议我在解析中需要返回一到两个返回真还是假的返回吗?

最佳答案

在第一个的“ body”中(或传递给then的函数中)返回第二个promise将通过第一个管道将第二个管道输送。两者结合产生的承诺结果将是后一个的结果。

我很可能会喜欢后面的示例。在第一个示例中,您仅返回undefined,这意味着无法从外部知道何时真正兑现了您的承诺。

如果将其返回,则可以将其取回并将其通过管道传递给某些代码,仅在完成(或失败)时才能执行。这就是承诺的重点。

但是,说实话,很难弄清楚您的代码实际在做什么,因此在这种情况下,返回某些内容实际上是没有用的。以防万一,如果两个都可行,我仍然会退还它。即使您没有直接访问返回的诺言的机会,也可能会在幕后使用它。在这种情况下,最好的办法是检查框架/库如何使用此值。

如果您想了解有关诺言以及如何正确使用诺言的更多信息,请here is a good article

07-22 08:19