[英]Chaining sqlite transaction in ionic 2
我已經鏈接查詢(SELECT更新后),但在ionic2所有sqlite的事務正在使用的回調我已經知道我們可以執行第二查詢中,然后在第一個承諾的查詢,但如果我有多發性鏈接的代碼將是難以閱讀。 我如何通過等待第一個Promise 而不是然后在其中執行第二個查詢? 還是喜歡實施Await ? 或對此有其他解決方案?
現在有我的代碼
this.sqlite.create({
name: 'qc_checking_subkon.db',
location: 'default'
}).then((db: SQLiteObject) => {
var sql = 'UPDATE t_detail SET qty_inspek='0' WHERE curr_qty_inspek > ?';
db.executeSql(sql ,['2'])
.then(res => {
var sql2 = 'SELECT * FROM t_detail'
db.executeSql(sql2,[])
.then(res2 => {
}
,(err)=>{
alert('Unable to execute sql: '+JSON.stringify(err));
})
.catch(e => console.log(JSON.stringify(e)));
})
我要讓sql2 = 'SELECT * FROM t_detail'
等待完成第一次查詢,而無需編寫然后里面
如果願意,您可以考慮像這樣將它們鏈接在一起,而不是嵌套您的承諾。 鏈接更加整潔,因為至少所有then
都處於同一級別而不是被嵌套。
db: SQLiteObject; // ADDED
this.sqlite.create({
name: 'qc_checking_subkon.db',
location: 'default'
})
.then((db: SQLiteObject) => {
this.db = db; // ADDED
var sql = 'UPDATE t_detail SET qty_inspek='0' WHERE curr_qty_inspek > ?';
return db.executeSql(sql, ['2']); // <== NOTE THE RETURN HERE
})
.then(res => {
var sql2 = 'SELECT * FROM t_detail'
this.db.executeSql(sql2, []) // ADDED 'this'
.then(res2 => {
}
, (err) => {
alert('Unable to execute sql: ' + JSON.stringify(err));
})
.catch(e => console.log(JSON.stringify(e)));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.