[英]returning a promise that returns a promise?
我有点困惑如何做到这一点。 这是我所拥有的:
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);
});
}]
}
两者实际上似乎都可以正常工作,并且随着调用快速执行,我看不到哪个是正确的。
有人可以建议我在解析中是否需要一到两个返回true或false的返回?
在第一个的“ body”中(或在传递给then
的函数中)返回第二个promise,将把第一个和第二个promise。 两者结合产生的承诺结果将是后一个结果。
我很可能会喜欢后面的示例。 在第一个示例中,您仅返回undefined
,这意味着无法从外部知道何时实际解决了您的承诺。
如果返回它,则可以取回它并将其通过管道传递给某些代码,仅在完成(或失败)时才能执行。 这就是承诺的重点。
但是,说实话,很难弄清楚您的代码实际在做什么,因此在这种情况下,返回某些内容实际上是没有用的。 以防万一,如果两个都可行,我仍然会退货。 即使您没有直接访问返回的诺言的机会,也可能会在后台使用它。 在这种情况下,最好的办法是检查框架/库如何使用此值。
如果您有兴趣了解有关诺言以及如何正确使用诺言的更多信息, 这是一篇不错的文章 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.