1
我無法調整到節點/ js/typescript的異步優先性質。這個小函數的意圖應該非常清楚:它需要一個數據庫並返回該數據庫中列出的一系列課程。同步運行節點sqlite3代碼
問題是,在任何數據庫操作運行之前,return語句都會運行,並且我得到一個空列表。當我在數據庫each
循環內設置一個斷點時,我可以看到正在找到這些行,並且這些路線將逐個放入ret
,但這些路線在調用courseList()
的範圍內永遠不會顯示。
const courseList = (database: sqlite3.Database): Course[] => {
let ret = new Array<Course>();
database.serialize();
database.each("select ID, Title from Course", (err: Error, row: Object) => {
ret.push(new Course(
row.ID,
row.Title
))
})
return ret;
}
對此有何建議?
調用代碼只是想打印有關課程的信息。例如:
let courses = courseList(db);
console.log(courses.length); // logs 0, even though the db contains courses
這裏沒有什麼特別的關於NodeJS的,只是更高階的函數,特別是回調函數。你能顯示呼叫代碼嗎? –
檢查此:http://stackoverflow.com/questions/39106668/node-js-sqlite3-read-all-records-in-table-and-return – orhankutlu
@AluanHaddad添加了一些示例調用代碼。 – NiloCK