返回一个返回承诺的承诺?

时间:2015-09-02 08:26:41

标签: javascript angularjs typescript promise

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

std::vector<cv::Point3d> test;
test.push_back(cv::Point3d(0, 1, 2)); 
test.push_back(cv::Point3d(3, 4, 5));
cv::Mat cvt(test, false);//second param for data copy (here, data are not duplicated!)

或者应该是在objectiveDetailService.getObjectiveDetailsExam之前有resolve: { objectiveDetailsExam: ['objectiveDetailService', 'subjectService', function (objectiveDetailService: IObjectiveDetailService, subjectService: ISubjectService) { objectiveDetailService.getObjectiveDetailsExam("/" + subjectService.subject.id) .then((results): ng.IPromise<any> => { return objectiveDetailService.getObjectiveDetailsObjective("/" + objectiveDetailService.examId); }); }] } 的那个:

return

实际上似乎都工作,并且当呼叫快速执行时,我看不出哪个是正确的。

有人可以建议我是否需要在解决方案中返回一两个返回true或false的返回值?

1 个答案:

答案 0 :(得分:3)

在&#39;身体中回复第二个承诺。第一个(或传递给then的函数)将第一个管道传输给第一个。由两者结合产生的承诺的结果将是后者的结果。

我很可能更喜欢后面的例子。在第一个示例中,您只返回undefined,这意味着无法从外部了解您的承诺何时得到解决。

如果你返回它,你可以取回它并将它传递给某些代码,只有在它完成(或失败)时才能执行。这是承诺的全部要点。

但是,老实说,很难弄清楚你的代码实际上在做什么,所以在这种特殊情况下返回某些内容实际上可能毫无用处。以防万一,如果两者都有效,我仍然会把它归还。即使您不能直接访问返回的承诺,它仍可能在场景后面使用。在这种情况下,最好的方法是检查框架/库如何使用此值。

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