0
私はAngularJsの新機能です。 私は約束を返す1つのバリデート関数を持っています。この関数は内部的にhttp get apiを呼び出し、約束応答を受け取ります。私は、呼び出されたAPIからの応答を必要とするいくつかの検証コードを持っています。しかし、http呼び出しが完了し、関数がAPIから応答を受け取る前に、validate関数は呼び出し元に約束を返しました。検証に失敗しました。誰かがこの要件を満たすいくつかのコードを共有してください。http APIが完了する前に角度関数が約束を返しました
function validateDates(delegate) {
var currStartDate = delegate.start_date;
var currEndDate = delegate.end_date;
var overlap = false;
var deferred = $q.defer();
UserDelegateService.getDelegateForUser(delegate.comit_id).then(
function(res) {
for(var i = 0; i<res.length; i++) {
var sDate = $filter('date')(res[i].start_date, 'yyyy-MM-dd');
var eDate = $filter('date')(res[i].end_date, 'yyyy-MM-dd');
if(currStartDate <= eDate && sDate <= currEndDate) {
overlap = true;
deferred.resolve(overlap);
} else
deferred.reject("Not overlapping");
}
},
function(errorresponse) {
console.log(errorresponse);
});
return deferred.promise;
};
呼び出すコード:
$scope.saveDelegate = function() {
var delegate = {
//assign values ...
};
var promise = validateDates(delegate);
promise.then(function(data) {
if(data) {
console.log('Dates are overlapping....if part.......', data);
}
}, function(reason) {
console.log('Dates are not overlapping..saving datlegate..else part.........', reason);
$scope.save(delegate);
});
};
あなたは今までに何をしてもらえますか? –
投稿を更新しました。ありがとう! – javauser
この状況を正しく処理するには、 '.then'関数を呼び出しコードに移動するか、別の' .then'関数の背後に連鎖させることです。これがどのように機能するかの提案については、呼び出しコードを表示してください。 – Claies