JS : async await : get synchronous output in save event - ashish-greycube/help GitHub Wiki

Code

frappe.ui.form.on("Task", {
    validate: async function (frm) {
        console.log('start of validate')
        await call_main(frm)
        console.log('end of validate')
    }
})

async function call_main(frm) {
    console.log(1);
    const open_task = await get_open_taks(frm)
    console.log('open_task', open_task)
    console.log(2)
    const closed_task = await get_closed_taks(frm)
    console.log('cancelled_task', closed_task)
    console.log(3)
}

function get_open_taks(frm) {
    return new Promise((resolve, reject) => {
        frappe.db.get_list('Task', {
            fields: ['subject', 'description'],
            filters: {
                status: 'Open'
            }
        }).then(records => {
            console.log('Openrecords', records);
            return resolve(records)
        })
    })
}

function get_closed_taks(frm) {
    return new Promise((resolve, reject) => {
        frappe.db.get_list('Task', {
            fields: ['subject', 'description'],
            filters: {
                status: 'Cancelled'
            }
        }).then(records => {
            console.log('Cancelledrecords', records);
            return resolve(records)
        })
    })
}

Output

image