node.js - 从另一个函数节点js获取函数调用的返回值
问题描述
我有一个名为uploadData 的函数,我在其中调用getClientId 来获取clientid。在 getclientId 函数中,我可以获得返回值。但我无法在 uploadData 函数中访问该返回值。在控制台中我越来越不确定。
uploadData(con, data, callback) {
var total = parseFloat(data.pricelist) + parseFloat(data.print)
var ac = parseFloat(total)*parseFloat(data.quantity)
var sold = parseFloat(data.soldprice)*parseFloat(data.quantity)
var rd = parseFloat(data.sold) - parseFloat(total)
var rt = parseFloat(rd) * parseFloat(data.quantity)
var client =data.client.toLowerCase()
var clientId = this.getClientId(con, data,callback)
console.log(clientId)
}
getClientId(con, data,callback) {
var client =data.client.toLowerCase()
con.query(`SELECT * from client where lower(name) = '${client}'`, function(err, rows) {
if(err) {
return err
}
else{
if(rows.length>0){
return rows[0].id
}
else{
con.query(
`INSERT INTO client SET
name = '${data.client}',
created_by = '${data.user_id}'`,
function(er, row) {
if(er){
return er
}
else{
return row.insertId
}
}
)
}
}
});
}
解决方案
您可以将您的函数转换为 Promise,然后使用 async/await 它在使用异步调用函数方面将更具可读性
getClientId(con, data,callback) {
return new Promise((resolve,reject)=>{
var client =data.client.toLowerCase()
con.query(`SELECT * from client where lower(name) = '${client}'`, function(err, rows) {
if(err) {
reject(err)
}
else{
if(rows.length>0){
resolve(rows[0].id)
}
else{
con.query(
`INSERT INTO client SET
name = '${data.client}',
created_by = '${data.user_id}'`,
function(er, row) {
if(er){
reject(er)
}
else{
resolve(row.insertId)
}
}
)
}
}
});
}
)
}
然后将此功能用作
const clientId = await this.getClientId(con, data,callback);
推荐阅读
- python - plt scatter 未显示与具有相同数据的 imshow 相同的点
- sql-server - 有没有办法修改你的 FROM Table20190901 表在 MS SQL 中有一个新的日期?
- java - 为什么我的垂直产品求和程序会出现“索引越界”异常?
- python - 如何使用 requests_html 异步获取() URL 列表?
- android - 我想通过使用分切器将扬声器输出循环回麦克风来在 Android 手机上播放音频消息。它会起作用吗?
- r - 如何在 r 中制作年度音乐排行榜?重复合并不起作用
- android - ArrayAdapter.getItem java.lang.IndexOutOfBoundsException:索引:1,大小:1
- c - 无限制计算无符号整数最大值的最佳算法.h
- gtk - 为 GtkWindow 使用 GdkWindow 的功能
- excel - 基于另一个具有数据的单元格格式化一个单元格