代码之家  ›  专栏  ›  技术社区  ›  Prabhjot Singh Kainth

值未插入数组中,数组返回空值

  •  0
  • Prabhjot Singh Kainth  · 技术社区  · 6 年前

    let arr=[];
    let frommilisec=1620000000;
    let tomilisec=4680000000;
    let slotmilisec=900000;
    while(frommilisec<=tomilisec)
    {
        let timeslot_milisec=frommilisec+slotmilisec;
    
        clinicslotsfunc(timeslot_milisec,maximumAppointment,clinicid,dated).then(results=>
        {
            let obj=results[0];
            console.log(obj);   // this displays { slot: '12:30:00', isbooked: 1 }
            arr.push(obj);
        });    
        console.log(arr)   //this logs blank array
        frommilisec=frommilisec+timeslot_milisec;
    }
    

    results[0] 包含数据 { slot: '12:30:00', isbooked: 1 }

    1 回复  |  直到 6 年前
        1
  •  1
  •   StepUp    6 年前

    Promise是一个异步操作,所以您需要 await 异步操作的结果:

    async yourmethod()
    {
        let arr=[];
        let frommilisec=1620000000;
        let tomilisec=4680000000;
        let slotmilisec=900000;
        while(frommilisec<=tomilisec)
        {
            let timeslot_milisec=frommilisec+slotmilisec;    
            let result = await clinicslotsfunc(timeslot_milisec
                , maximumAppointment, clinicid, dated);
    
            arr.push(result);
        });    
        console.log(arr);
        frommilisec=frommilisec+timeslot_milisec;
        return arr;
    }
    
        2
  •  -1
  •   d_bhatnagar    6 年前

    返回一个承诺(异步运行),“.then”部分将在将来某个时间执行,因此如果承诺不拒绝,对象将在将来某个时间推送到数组。

    既然你在做控制台.log(arr);在这个异步任务之后,它是空的,因为 不会马上跑的。因此,您的数组总是记录为空,因为数组将在将来被填充。

    推荐文章