好吧,下面是我的代码片段,我已经删除了许多不必要的东西和不相关的东西,但我已经离开了处理问题的部分。
我在调用运行必要查询所需的函数时使用回调。由于我在下面有很多这样的查询,我想知道这是否是确保查询执行所需订单的正确方法。我知道我可以删除这些函数并简单地将它们放在序列化中,但是重复相同的代码非常难看,所以我把它们放在函数中,更明确的是这里是我的问题。
问题:如果我在函数内部有很多查询,那么确保以所需顺序执行get的正确方法是使用我已经完成的回调?,即使在你不想返回任何内容的情况下,例如(更新行时)表中的数据库)
get_data(pel, function(results){
var cntl = results;
get_user(pel, function(results_from_user){
update_data(0, 0, function(cb_result){
//do some stuff
});
});
});
function get_data(dt, callback)
{
db.get(`SELECT * FROM my_table`, function(error, row) {
var data_to_return = [..];
return callback(data_to_return);
});
}
function update_data(vdr,dwe,callback)
{
db.run(`UPDATE my_table SET val1='${..}', val2 = '${..}'`);
//..
return callback("updated");
}
function get_user(ms, callback)
{
db.get(`SELECT id FROM my_table_2 WHERE id=${..};`, function(error, row) {
if(row == undefined) db.run(`INSERT INTO my_table_2 (id) VALUES (?)`,[0]);
//..
var id_to_return = [..];
return callback(id_to_return);
});
}
也许我应该添加我的代码按预期工作,我只是确保我没有使用一种奇怪的方式。
答案 0 :(得分:1)
我可以向您保证您已经制定了典型的解决方案。事实上,回调用于等待响应,然后转到下一个语句.Goog job