node.js - 从nodejs中的回调函数返回值
问题描述
我有这种方式的功能
function con(){
database.connect(con, (err, con) => {
conn.query("select * from person", (err, rs) => {
console.log(rs)--->result
return rs
})
}
}
var val = con()
console.log(val) // --> Undefined
经过大量搜索后才知道我们不能从回调中返回值。完成这个
function con(fn){
database.connect(con, (err, con) => {
conn.query("select * from person", (err, rs) => {
console.log(rs) // --> result
fn(rs)
})
}
}
var val = con(function(rs) {
console.log(rs) // --> result
return rs
})
console.log(val) // --> Again undefined
我想在另一个方法中使用 rs 并且应该在 graphql 的解析器中返回它 如何从上面返回值并在另一个函数中使用它
解决方案
所以,你需要清楚地理解的事情——当你return
,你从当前函数返回。
在示例中:
var val = con(function(rs) {
console.log(rs) // --> result
return rs
})
你rs
从匿名回调函数返回。但con
不返回任何东西。
我建议你使用async/await
,只要我让你使用pg
或mysql
。
const connection = await database.connect(connectionOptions)
const result = await connection.query('select * from person')
console.log('Result:', result)
推荐阅读
- php - 从 xml 中删除一个节点
- javascript - Handlebars.compile 抛出异常'错误:您必须将字符串或 Handlebars AST 传递给 Handlebars.compile。你通过了 ...'
- amazon-web-services - AWS Cognito 自定义身份验证 - 将元数据发送到挑战 lambda 函数
- python - 使用循环创建 numpy 数组
- c - 使用宏生成可变参数函数调用
- html - 在页面加载时显示导航栏
- email - 多个电子邮件帐户作为发件人
- amazon-web-services - 查询历史数据获取月末数据
- javascript - 处理文档中的多个 ID
- vuejs2 - Vuejs2-如何从方法中调用过滤器函数