繁体   English   中英

兑现诺言,兑现诺言?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM