获取从回调
回答
的原因是因为DB调用是异步的 - 所以当你console.log
命中,该命令尚未完成。你有几个选择,1)。做你的工作在该命令的回调函数:
statement.get(function(err, col) {
temp = col;
//do stuff!
});
2)使用一个回调函数,并传递数据到它:
statement.get(function(err, col) {
temp = col;
callback(temp);
});
function callback(param) {
console.log(param);
}
你只能使用该值调用回调后...
db = new sqlite3.Database(config.sqlite3config.path);
statement = db.prepare("SELECT * FROM test_table");
var temp = {};
statement.get(function(err, col) {
temp = col;
console.log(tempo); // here works!...
//do your code here!
});
console.log(temp); //here isn't work
感谢您的回答,但我需要在代码的另一部分statement.get函数后得到值... – user3012872
哟不能这样做,因为在回调返回之前该值不存在...解决方法是创建基于回调的逻辑 –
你的问题是,你正在运行一个无阻塞呼叫。所以在db调用返回之前,temp仍然是一个空对象。
这里是你想要做什么:
var db = new sqlite3.Database(config.sqlite3config.path),
temp;
statement = db.prepare("SELECT * FROM test_table");
statement.get(function(err, col) {
temp = col;
console.log(temp);
});
没有理由设定温度为空对象,因为山坳无论如何都会被覆盖,所以只需要声明它作为一个变量,你会好。我会做的是甚至不设置温度,只是使用列。
,但如果你确实需要做到这一点,你没有,你可能想要做一个黑客,安永的方式,并设置了超时:
db = new sqlite3.Database(config.sqlite3config.path);
statement = db.prepare("SELECT * FROM test_table");
var temp = {};
statement.get(function(err, col) {
temp = col;
});
setTimeout(function() {
console.log(temp);
}, 20);
用做这种方式的问题是,你有不知道什么时候回报会回来,如果有的话。
读你的意见,你可能需要修改你的代码是这样的:
db = new sqlite3.Database(config.sqlite3config.path);
statement = db.prepare("SELECT * FROM test_table");
statement.get(doSomethingElse);
function doSomethingElse(err, temp) {
// your code here
console.log(temp);
}
- 1. 从回调中获取oauth_verifier
- 2. 获取回调
- 3. Backbone.js获取回调
- 4. 从回调函数获取变量
- 5. Parse.com从回调URL获取数据
- 6. 从java回调中获取值
- 7. 从回调中获取数据
- 8. 从jquery回调中获取类实例
- 9. 从回调获取控制器实例
- 10. 从ajax jsonp回调获取列表
- 11. 从SwingUtilities.InvokeLater调用获取返回值?
- 12. 如何从回调中获取值?
- 13. 如何从“one”事件获取回调
- 14. 从回调函数中获取值swift
- 15. OverScrollDecoratorHelper从视图获取onOverScrollUpdate回调
- 16. 从异步回调中获取值
- 17. 从HttpWebRequest.BeginGetResponse回调中获取数据
- 18. Jeditable从AJAX回调中取消回调?
- 19. Axios回调获取反应
- 20. 获取javax.ejb.Timer的回调
- 21. 获取OAuth回调[C#]
- 22. 获取回调错误
- 23. Scrapy获取回调数据
- 24. Android PrintManager获取回调
- 25. 获取onDrawerOpened和onDrawerClosed回调
- 26. 如何从c#中的回调方法获取返回值
- 27. 从回调函数获取返回值-JQuery
- 28. 如何从环回中的AngularJS回调函数获取数据?
- 29. 从clang匹配回调中获取方法调用的参数
- 30. 使用回调从调用数据库获取JSON值
或者你能recommented另一同步sqlite3的模块的NodeJS? – user3012872