Im работает над сценарием, где при загрузке страницы у меня есть 2 $http.get()
запрос. Один $http.get()
независимы от другого $http.get()
. Все отлично работает. Но в какой-то ситуации мой второй запрос $http.get()
выполняется до 1-го $http.get()
, и я не могу получить желаемый результат. Как мы можем связать запрос? Поскольку я новичок в AngularJS, у меня нет такой идеи.
$scope.onload = function()
{
var responsePromise1 = $http.get(1st rest call);
responsePromise1.success(function(data) {
console.log(data.platform.record);
$scope.records=data.platform.record;
});
responsePromise1.error(function(data, status, headers, config) {
alert("ajax failed");
});
var responsePromise2 = $http.get(2nd rest call);
responsePromise2.success(function(data2) {
console.log(data2.platform.record);
$scope.records2=data2.platform.record;
});
responsePromise2.error(function(data2, status, headers, config) {
alert("ajax failed");
});
}
$scope.butto = function(datafrom1st,datafrom2nd)
{
var responsePromise3 = $http.get(3rd rest call);
responsePromise3.success(function(data3) {
console.log(data3.platform.record);
$scope.records3=data3.platform.record;
});
responsePromise1.error(function(data3, status, headers, config) {
alert("ajax failed");
});
}
<body>
<div ng-init="onload()">
<div ng-repeat="record in records">
{{record.id}}
</div>
<div ng-repeat="record2 in records2">
{{record2.name}}
</div>
<button type="button" class="btn btn-primary btn-sm ng-cloak"
style="padding-bottom:25px;font-weight:bold;"
ng-init="butto(record.id,record2.name)">
{{record3.data}}
</button>
</div>
</body>
Ваш 'responsePromise1' выполняется перед' responsePromise2', но оба они выполняют асинхронизацию вызова, что означает, что мы не можем гарантировать, кто первым закончит. Если вам нужно связать запрос, ваш 'responsePromise2' должен находиться внутри' sucess' 'responsePromise1' – Hereblur
Если они независимы, вы не должны их связывать. –
Если они независимы друг от друга, используйте Promise All. В обратном вызове «then» он будет иметь оба ответа. – Hoyen