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

Arrays 值未插入数组中,数组返回空值,arrays,node.js,promise,sequelize.js,Arrays,Node.js,Promise,Sequelize.js,我有以下代码,问题是obj没有插入数组arr中 let arr=[]; let frommilisec=1620000000; let tomilisec=4680000000; let slotmilisec=900000; while(frommilisec<=tomilisec) { let timeslot_milisec=frommilisec+slotmilisec; clinicslotsfunc(timeslot_milisec,maximumAppoin

我有以下代码,问题是obj没有插入数组arr中

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;
}
让arr=[];
让frommilisec=1620000000;
让tomilisec=468000000;
设Slotmiliec=900000;
while(从毫秒开始)
{
设obj=结果[0];
console.log(obj);//显示{slot:'12:30:00',isbooked:1}
方位推力(obj);
});    
console.log(arr)//此日志记录空白数组
frommilisec=frommilisec+时隙_毫秒;
}

结果[0]
包含数据
{slot:'12:30:00',isbooked:1}
承诺是一个异步操作,因此您需要
等待
异步操作的结果:

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;
}
async yourmethod()
{
设arr=[];
让frommilisec=1620000000;
让tomilisec=468000000;
设Slotmiliec=900000;

而(frommilisecPromise)是一个异步操作,因此您需要等待异步操作的结果:

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;
}
async yourmethod()
{
设arr=[];
让frommilisec=1620000000;
让tomilisec=468000000;
设Slotmiliec=900000;

虽然(frommilisecSinceclinicslotsfunc返回一个承诺(异步运行),但“.then”部分将在将来某个时间执行,因此如果承诺不被拒绝,obj将在将来某个时间推送到数组中


现在,由于您正在执行console.log(arr);在此异步任务之后,它是空的,因为clinicslotsfunc.then()不会立即运行。因此,您的数组始终记录为空,因为数组将在将来填充。

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


现在,由于您正在执行console.log(arr);在执行此异步任务之后,它是空的,因为clinicslotsfunc.then()不会立即运行。因此,您的数组始终记录为空,因为该数组将在将来填充。

clinicslotsfunc
可能是异步函数。尝试在arr.push inside之后记录arr。我建议您在此类情况下使用调试器工具。这里有一个指向教程@Sunil it logs a的链接arr.push之后的rr。我想返回此arr。
clinicslotsfunc
可能是异步函数。尝试在arr.push之后将arr记录到block中。我真的建议您在这种情况下使用调试器工具。这里有一个指向教程@Sunil的链接,它在arr.push之后记录arr。我想返回此arr。如何从这个asy返回arrnc yourmethod()?它返回Promise{}@prabhjotsinghkaint您能显示
console.log(result)
console.log(result.data)
?对于console.log(result),它记录{slot:'18:15:00',isbooked:1}和console.log(result.data)它的日志未定义。因为clinicslotsfunc本身是一个承诺,Sequelize查询。它正在等待Sequelize承诺完成。这就是为什么。无论如何,感谢您抽出时间。我如何从这个异步yourmethod()返回arr?它返回承诺{}。@PrabhJotsinghkaint您能显示
console.log(result)的结果吗
console.log(result.data)
?对于console.log(result),它记录{slot:'18:15:00',isbooked:1}和对于console.log(result.data)它的日志未定义。因为clinicslotsfunc本身是一个承诺,Sequelize查询。它正在等待Sequelize承诺完成。这就是为什么。无论如何,感谢您抽出时间。我知道,我希望将值插入数组。我知道,我希望将值插入数组。