簡體   English   中英

異步函數在節點js中完成工作后如何調用函數

[英]How to call function after an asynchronous function finishes work in node js

我正在嘗試在函數完成工作后調用函數

 invalue.map((val) => {
               const data = column.map(v=>{ return encryptData.regularDataEncrypt( val[v])});
               const withcote = data.map(x => {return  "'" + x + "'"})   
               const serialnumber_voice =val.serialnumber_voice;   
               const cassdataQuery=`insert into cdr_voice(id,${str},isencrypted) values(now(),${withcote.join()},false)`;
               db.execute(cassdataQuery).then(data=>{
                 pg.query(`update cdr_voice set is_cassandra= true WHERE serialnumber_voice = ${serialnumber_voice}`).then(u=>{
                    console.log("is_cassandra updated",serialnumber_voice )
                 })
                 console.log("data updated ",serialnumber_voice)
               })
            })

我去執行

 function incrementQueryValue(){
    encryptCdrVoice()
}

地圖功能完成后的功能

嘗試從與map使用的回調中返回一個承諾。

通過這種方式,可以使用Promise.all等待所有 promise 得到解決,然后調用encryptCdrVoice

const tasks = invalue.map((val)=>{
    const data = column.map(v=>{ return encryptData.regularDataEncrypt( val[v])});
    const withcote = data.map(x => {return  "'" + x + "'"})
    const serialnumber_voice =val.serialnumber_voice;
    const cassdataQuery=`insert into cdr_voice(id,${str},isencrypted) values(now(),${withcote.join()},false)`;
    return db.execute(cassdataQuery).then(data=>{
        pg.query(`update cdr_voice set is_cassandra= true WHERE serialnumber_voice = ${serialnumber_voice}`).then(u=>{
            console.log("is_cassandra updated",serialnumber_voice )
        })
        console.log("data updated ",serialnumber_voice)
    })

})

Promise.all(tasks).then({
    encryptCdrVoice()
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM