獲取從回調
回答
的原因是因爲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