javascript - 如何在节点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 被解决,Promise.all
然后调用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()
})
推荐阅读
- php - 从时间中删除秒并舍入分钟
- c# - 确定每个路径的特定图像是否在 PictureBox 中
- javascript - FormData 对象未接收文件
- javascript - 使用 create-react-app 创建 React 应用程序后如何安装 Redux?
- reactjs - Firebase 没有响应云功能
- node.js - Mongoose 查找从多个集合中获取数据
- c# - Xceed.Words.NET DocX - 将文档添加到 Maindocument 并将编号列表重置为 1
- sql - 将多人插入一个大型数据集
- xml - 如何从父模板中转义整个刀片模板的输出
- python - Python - 为什么我们使用 init 方法而不是自定义构造函数?