簡體   English   中英

在ionic 2中鏈接sqlite交易

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM