我有一个通过调用函数validatePositions来验证startDate和endDate的函数,在初始化时我想调用这个函数,但有时endDate调用的返回速度比startDate快,这对我的情况是不正确的。
function validatePositions (date) {
validatePositions (date)
.then(function (response) {
if (response.data) {
hideWarning();
} else if (!warningShowed()) {
displayWarningMessage();
}
});
}
Init函数看起来像这样:
function init() {
$q.all(validationService.validatePositions(startDate)).then(function () {
wizardService.validatePositions(endDate);})
}
如何嵌套此调用以使它们同时返回或首先启动调用然后调用endDate?
答案 0 :(得分:0)
不要在您的服务中处理您的承诺,而是返回并在控制器中处理它。类似的东西:
function validatePositions (date) {
return $resource(url, {date: date}).get()
}
然后在你的控制器中执行:
init(){
validateService.validatePositions(startDate).$promise.then(
function(success){
if(success.data){
//do somethig
validateService.validatePositions(endDate).$promise.then(
function(success){
if(success.data){
//do somethig
}
}
}
}
}
function(error){
//do something
});
答案 1 :(得分:0)
你应该回报承诺。像下面一样更改您的代码。
function validatePositions (date) {
return validatePositions(date).then(function (response) {
hideWarning();
return response.data;
}),function(error) {
displayWarningMessage();
});
}