Я вызываю несколько вызовов ajax, но код достигает API только после выполнения всех вызовов ajax.AngularJS: множественные асинхронные вызовы AJAX
Javascript:
function test = function(){
var entity = {};
entity.Number = 1;
appFactory.testPostCall(entity, 'ApiController/TestMethod');
entity.Number = 2;
appFactory.testPostCall(entity, 'ApiController/TestMethod');
}
AppFactory
factory.testPostCall = function (number, appendUrl) {
var q = $q.defer();
$http({
method: "POST",
url: url + appendUrl,
data: number
}).success(function (data, status, headers, config) {
q.resolve(data);
}).error(function (data, status, headers, config) {
q.reject(data);
});
return q.promise;
}
API
[HttpPost]
public Nullable<int> TestMethod(TestEntity entity)
{
return entity.Number;
}
Я проследил, как код работает на контрольных точек. вызов функции тестирования() выполняет следующие действия:
javascript -> appFactory
javascript -> appFactory
API
API
//with the parameter Entity having the value Entity.Number = 2 for both API calls.
Я попытался поместить контрольную точку в
entity.Number = 2;
и ждать, пока API называется, но, кажется, что код ожидает функция не до конца, пока вызывается API. Я так растерялся от поведения этого, я действительно ожидал что-то вроде следующего:
javascript -> appFactory -> API //entity.Number = 1
javascript -> appFactory -> API //entity.Number = 2
Chaining работает хорошо, но мне нужно работать как самостоятельно, так и я действительно хочу, чтобы понять, Что происходит.
entity.Number = 1;
appFactory.testPostCall(entity, 'ApiController/TestMethod')
.then(function(data){
entity.Number = 2;
appFactory.testPostCall(entity, 'ApiController/TestMethod');
});
спасибо !!!
Эй, это один глаз для меня O_O спасибо! Еще одна проблема для меня: теперь API получает 1 и 2. Теперь единственная проблема заключается в том, что вызовы API вызываются только после выполнения всей функции. – ElementaryStudentProgramming
@ElementaryStudentProgramming: Это цель «Обещания». Это неблокирование, async. –
Я не совсем получить его, если это «без блокировки», не должен первый 'appFactory.testPostCall (юридическое лицо,«ApiController/TestMethod»);' выйти в API момент он называется? Вместо этого происходит то, что код ожидает выполнения всей функции javascript до того, как код достигнет API. – ElementaryStudentProgramming