gpt4 book ai didi

mysql - 如何在 Node js 中执行此异步功能

转载 作者:可可西里 更新时间:2023-11-01 08:20:36 25 4
gpt4 key购买 nike

我有一个代码可以做一些计算。我如何以异步方式编写此代码?查询数据库时,好像不能同步得到结果。那么如何实现这种功能呢?

function main () {
var v = 0, k;
for (k in obj)
v += calc(obj[k].formula)
return v;
}

function calc (formula) {
var result = 0;
if (formula.type === 'SQL') {
var someSql = "select value from x = y"; // this SQL related to the formula;
client.query(someSql, function (err, rows) {
console.log(rows[0].value);
// *How can I get the value here?*
});
result = ? // *How can I return this value to the main function?*
}
else
result = formulaCalc(formula); // some other asyn code
return result;
}

最佳答案

异步函数不可能返回结果,它只会在自己的函数范围内返回。

同样这是不可能的,结果将永远不变(null)

client.query(someSql, function (err, rows) {
result = rows[0].value;
});
return result;

在 calc() 函数中放置一个回调作为第二个参数,并在 client.query 回调中使用结果调用该函数

function main() {
calc(formula,function(rows) {
console.log(rows) // this is the result
});
}

function calc(formula,callback) {
client.query(query,function(err,rows) {
callback(rows);
});
}

现在,如果您希望 main 返回该结果,您还必须在 main 中放置一个回调参数并像以前一样调用该函数。

我建议您查看async它是一个很棒的图书馆,不必处理这种麻烦

关于mysql - 如何在 Node js 中执行此异步功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13648054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com