SQLite回调的高效解决方案
SQLite callback efficient solution
我想使用JavaScript运行一系列SQLite查询。这些查询获取几个表的最新更新时间戳。例如:
SELECT last_updated FROM students ORDER BY last_updated DESC LIMIT 1;
SELECT last_updated FROM docs ORDER BY last_updated DESC LIMIT 1;
SELECT last_updated FROM logs ORDER BY last_updated DESC LIMIT 1;
SELECT last_updated FROM requests ORDER BY last_updated DESC LIMIT 1;
然后我将这些last_updated时间戳发送到服务器。当我想到如何做到这一点时,我会使用这样的内容:
var message = {};
sql('QUERY 1',[],function(row){
message.q1 = row.shift().shift(); // first row, first item
sql('QUERY 2',[],function(row){
message.q2 = row.shift().shift();
sql('QUERY 3',[],function(row){
message.q3 = row.shift().shift();
sql('QUERY 4',[],function(row){
message.q4 = row.shift().shift();
$.ajax('submit.php',{ // tell the server these things.
data: message,
type: 'POST',
success: function(response) {
console.log('Server replied: '+response+''n');
},
error: function() {
console.log('HUHU.'n');
}
}
});
});
});
});
这将工作,但我发现这是非常低效的,因为嵌套SQL调用。也有可能需要来自10个不同表的数据。
有更有效的方法吗?
对于这种嵌套结构,您可以使用step。
它允许你使用如下语法:
Step(
function readSelf() {
fs.readFile(__filename, this);
},
function capitalize(err, text) {
if (err) throw err;
return text.toUpperCase();
},
function showIt(err, newText) {
if (err) throw err;
console.log(newText);
}
);
你可以做的一件事是并行调用,并使用"barrier"模式来查看它们何时完成。
var calls_to_go = 4;
var callback = function(){
calls_to_go -= 1;
if(calls_to_go <= 0){
do_ajax_stuff();
}
}
sql('QUERY 1',[], callback);
sql('QUERY 2',[], callback);
sql('QUERY 3',[], callback);
sql('QUERY 4',[], callback);
当然,这个特定的代码只是给出一个想法。如果你使用这些异步编程库中的一个,它们应该都有一些功能,使编写这类东西更愉快,如果你仍然想手工做事情,你应该确保事情更有组织,"4"不是硬编码的,等等。
相关文章:
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 了解因子分解解决方案
- 提交表单后的最佳解决方案
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- chrome中的意外全局变量有解决方案吗
- 更好的解决方案HTML元素幻灯片从右侧CSS转换
- 使用SeleniumWebdriver将文本复制到文件时出现编译错误的解决方案
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- JS驱动的常见问题页面的推荐DB解决方案
- 这里有一个更优雅的/DRY/可维护的JS解决方案
- 什么是农民最实用的解决方案;印刷动物”;
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 将数据加载到地图上的更好解决方案
- 我根据解决方案按类对
- 元素进行分组,但需要帮助了解它的工作原理
- SQLite回调的高效解决方案