Javascript 为什么循环后数组看起来是空的?

Javascript 为什么循环后数组看起来是空的?,javascript,arrays,loops,debugging,javascript-objects,Javascript,Arrays,Loops,Debugging,Javascript Objects,功能par(idF、idM){ this.IDOvna=idM; this.IDOvce=idF; } 功能育种(){ 设idOvce=[]; 设brOvce=[]; 设mesecOvce=[]; 让Godinaovice=[]; 设istorija1=[]; 设istorija2=[]; 设idOvna=[]; 设brOvna=[]; 让mesecOvna=[]; 让godinaOvna=[]; 设y=0; 设o=0; 让帕罗维=[]; 设c=0; 取回(“http://localhost/o

功能par(idF、idM){
this.IDOvna=idM;
this.IDOvce=idF;
}
功能育种(){
设idOvce=[];
设brOvce=[];
设mesecOvce=[];
让Godinaovice=[];
设istorija1=[];
设istorija2=[];
设idOvna=[];
设brOvna=[];
让mesecOvna=[];
让godinaOvna=[];
设y=0;
设o=0;
让帕罗维=[];
设c=0;
取回(“http://localhost/ovce/ovce.json")
.然后(功能(resp){
返回resp.json();
})
.then(功能(数据){
控制台日志(数据);
for(设i=0;i

羞怯的
育种

如何在提取中使用此
问题
函数

如果在获取其完全正常值之外使用int,则数组将为空

编辑:

由于使用了post fetch方法,因此在填充数据时,需要将所有while循环放在最后一个,因为fetch是异步的=/ 由于您有两个fetch,并且两个fetch都在填充数组的,因此需要在最后一个
中执行第二个,然后在第一个
fetch中执行第二个
。最后,您可以在最后一个
循环时执行
,然后执行第二个
获取的
。
使用异步等待方法可能更清晰

function par(idF, idM) {
    this.IDOvna = idM;
    this.IDOvce = idF;
}
  
  
  
function breeding() {
    let idOvce = [];
    let brOvce = [];
    let mesecOvce = [];
    let godinaOvce = [];
    let istorija1 = [];
    let istorija2 = [];

    let idOvna = [];
    let brOvna = [];
    let mesecOvna = [];
    let godinaOvna = [];

    let y = 0;
    let o = 0;
    let parovi = [];
    let c = 0;
    fetch("http://localhost/ovce/ovce.json")
    .then(function(resp) {
    return resp.json();
    })
    .then(function(data) {
    console.log(data);
    for (let i = 0; i < data.ovce.length; i++) {
        idOvce[i] = data.ovce[i].id;
        brOvce[i] = data.ovce[i].broj;
        mesecOvce[i] = data.ovce[i].mesec;
        godinaOvce[i] = data.ovce[i].godina;
        istorija1[i] = data.ovce[i].istorija1;
        istorija2[i] = data.ovce[i].istorija2;
    }

    fetch("http://localhost/ovce/ovnovi.json")
    .then(function(resp1) {
    return resp1.json();
    })
    .then(function(data1) {
        console.log(data1);
        for (let g = 0; g < data1.ovnovi.length; g++) {
            idOvna[g] = data1.ovnovi[g].id;
            brOvna[g] = data1.ovnovi[g].broj;
            mesecOvna[g] = data1.ovnovi[g].mesec;
            godinaOvna[g] = data1.ovnovi[g].godina;

            while (o < idOvna.length) {
            y = 0;
            while (y < idOvce.length) {
                if (istorija1[y] != 0) {
                if ((istorija2[y] != idOvna[o]) && (istorija2[istorija1[y]] != idOvna[o])) {
                    parovi[c] = new par(idOvce[y], idOvna[o]);
                    c++;
                }
                } else {
                parovi[c] = new par(idOvce[y], idOvna[o]);
                c++;
                }
                y++;
            }
            o++;
            }
            console.log(parovi);
            return parovi;
        }
        });
    });
    

}
功能par(idF、idM){
this.IDOvna=idM;
this.IDOvce=idF;
}
功能育种(){
设idOvce=[];
设brOvce=[];
设mesecOvce=[];
让Godinaovice=[];
设istorija1=[];
设istorija2=[];
设idOvna=[];
设brOvna=[];
让mesecOvna=[];
让godinaOvna=[];
设y=0;
设o=0;
让帕罗维=[];
设c=0;
取回(“http://localhost/ovce/ovce.json")
.然后(功能(resp){
返回resp.json();
})
.then(功能(数据){
控制台日志(数据);
for(设i=0;i
处理数组的循环在fetch回调函数之外,因此它不会等待填充数组。看

您可以使函数
异步
并使用
等待
等待它们

还要注意,调用此函数的代码需要使用
wait
.then()
来获取返回的
parovi
数组。看

异步函数繁殖(){
设idOvce=[];
设brOvce=[];
设mesecOvce=[];
让Godinaovice=[];
设istorija1=[];
设istorija2=[];
设idOvna=[];
设brOvna=[];
让mesecOvna=[];
让godinaOvna=[];
设y=0;
设o=0;
让帕罗维=[];
设c=0;
等待取回(“http://localhost/ovce/ovce.json")
.然后(功能(resp){
返回resp.json();
})
.then(功能(数据){
控制台日志(数据);
for(设i=0;i