function cacheData() {
if (!isOpen()) {
openSqlite()
}
console.log("开始查询后台数据库:" + getNowDate());
createTables(sql.creatTableSql);
//缓存NFC绑定信息
http.post(common.clmkzhajUrl + 'getAllNFCBind').then(res => {
let array = res.data;
console.log("查询后台数据库结束:" + getNowDate());
//删除历史绑定信息
deleteData("ZHAJ_NFCBIND").then(res => {
if (res.state == 1) {
//保存数据
console.log("开始插入:" + getNowDate());
insertData(array, 'ZHAJ_NFCBIND').then(res => {
console.log("插入结束:" + getNowDate());
})
console.log("测试方法是否异步");
}
});
});
}
function insertData(dataArray, tableName) {
//判断有没有传参
if (dataArray != undefined && dataArray.length > 0) {
let sqlArray = [];
let sql="";
let value="";
for (let i = 0; i < dataArray.length; i++) {
let keyStr = "";
let valueStr = "";
for (let key in dataArray[i]) {
keyStr += key + ',';
value=dataArray[i][key].toString().replace(/'/g,"''");
valueStr += `'${value}',`;
}
keyStr = keyStr.substring(0, keyStr.length - 1);
valueStr = valueStr.substring(0, valueStr.length - 1);
sqlArray.push(`insert into ${tableName}(${keyStr}) values(${valueStr})`);
}
//开启事务
transactionDB("begin");
return new Promise((resolve, reject) => {
plus.sqlite.executeSql({
name: dbName,
sql: sqlArray,
success(e) {
transactionDB("commit");
resolve({
"state": 1
});
},
fail(e) {
console.log(e)
transactionDB("rollback");
resolve({
"state": 0
});
}
})
})
} else {
return new Promise((resolve, reject) => {
resolve({
"state": 0
});
})
}
}
2 个回复
Wangqian777 (作者)
控制台打印如下
m***@protonmail.com
我也遇到了同样的问题,批量插入很耗时,期间不能操作app 卡死 ,请问解决了吗