我有链接查询(更新后选择(,但是在ionic2中,所有sqlite交易都在使用回调我已经知道我们可以在中执行第二个查询,然后在第一个Promise查询中,但是如果我有截链,则很难读取代码。如何通过等待第一个Promise 而不是在然后中执行第二个查询?还是喜欢实施等待?或者也许还有其他解决方案?
现在有我的代码
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)));
});