gpt4 book ai didi

javascript - 在第一个请求完成后调用第二个请求

转载 作者:行者123 更新时间:2023-11-29 23:25:45 24 4
gpt4 key购买 nike

我有一个关于请求的问题。我提出第一个请求,然后我想第一个 onSuccess 方法将运行,但程序立即发出第二个请求。我该如何处理? Context.getAlarmGroupById 立即被调用 2 次。我的代码:

        function loadAll () {
Context.getAlarmGroupChainById({
id: $stateParams.id
}, onSuccess, onError);


function onSuccess(data, headers) {
vm.temp=data;
var numberGroupChain=vm.temp.length;
for(var i=0; i<numberGroupChain; i++){
vm.location.push(vm.temp[i].location);
vm.alarmChainList.push({name: vm.location[i],active:null,totalAlarmGroupNumber:null});
//loadData(vm.temp[i].id);
asyncLoop(vm.temp[i].id);
}
}


function onError(error) {
AlertService.error(error.data.message);
}

var index = 0;

function asyncLoop(chainId) {
if(index >= vm.temp.length) {
return;
}
Context.getAlarmGroupById({
id:chainId
}, onSuccess, onError);


function onSuccess(data,headers){
index++;
asyncLoop();
}

function onError(data,headers){
index++;
asyncLoop();
}
}

}

最佳答案

首先 Car.getGroupId 是一个异步函数。所以你必须确保上一个调用完成,然后再进行下一个调用。

其次:递归函数是为替换循环而创建的,在成功函数和索引递增后,调用递归函数以确保您的要求。

第三:改变循环后asyncLoop(vm.temp[i].id);的调用顺序:

最后:

请使用以下代码:

function loadAll () {

var index = 0;

function asyncLoop(chainId) {
if(index >= vm.temp.length) {
return;
}
Context.getAlarmGroupById({
id:vm.temp[index].id
}, onSuccess, onError);


function onSuccess(data,headers){
index++;
asyncLoop();
}

function onError(data,headers){
index++;
asyncLoop();
}
}

function onSuccessParent(data, headers) {
vm.temp=data;
var numberGroupChain=vm.temp.length;
for(var i=0; i<numberGroupChain; i++){
vm.location.push(vm.temp[i].location);
vm.alarmChainList.push({name: vm.location[i],active:null,totalAlarmGroupNumber:null});
//loadData(vm.temp[i].id);

}
asyncLoop();
}


function onErrorParent(error) {
AlertService.error(error.data.message);
}

Context.getAlarmGroupChainById({
id: $stateParams.id
}, onSuccessParent, onErrorParent);

}

关于javascript - 在第一个请求完成后调用第二个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49422094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com