websql操作类封装
在之前,我写了一个websql的封装类库,代码如下:
(function(win) { function smpWebSql(options){ options = options || {}; this.database = null; this.DateBaseName = options.DateBaseName || 'SmpDB'; this.Version = options.Version || '1.0'; this.Description = options.Description || 'SmpDB'; this.DataBaseSize = options.DataBaseSize || 2 * 1024 * 1024; this.init(); } smpWebSql.prototype = { init: function() { this.database = openDatabase(this.DateBaseName, this.Version, this.Description, this.DataBaseSize); //初始化数据库 }, addBlob: function (tableName, arr,index,isFirst,callback) {//批量添加字段 /* 注 : 数据里面的第一个key存储类型为BLOB @param tableName 表名 @param arr 更新的数据 [{key1:value1 , key2 : value2 ...},{key1:value1 , key2 : value2 ...}] @param index BLOG字段所在的索引位置 @param isFirst 是否是第一次创建表 @param callback 回调 */ if (arr == null) { return this; } callback = this.isFunction(callback) ? callback : new Function(); var _me = this, _db = this.database, keyC = [], keyI = [], _key = ''; arr = arr || []; if (arr && arr.constructor == Array) { for (var i in arr[0]) { keyC.push(i); keyI.push(i); } _key = keyI.join(","); index = index == undefined ? 0 : index; keyC[index] = keyC[index] + ' BLOB'; _db.transaction(function (tx, result) { //var csql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')'; //console.log('csql:' + csql); if (isFirst == true) { tx.executeSql('CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')'); } //var sql = ""; for (var s = 0, _len = arr.length; s < _len ; s++) { var _value = _me.split(arr[s]); //sql += 'INSERT INTO ' + tableName + ' (' + _key + ') VALUES (' + _value + ')'; //console.log("sql:" + sql); tx.executeSql('INSERT INTO ' + tableName + ' (' + _key + ') VALUES (' + _value + ')',[],function (tx, result) { callback(result.rowsAffected); //console.log('添加成功'+result.rowsAffected); },function (tx, error) { console.error('添加失败'); callback(false); }); } _key = keyI = keyC = null; callback(); }); } return this; }, add: function (tableName, arr, callback, noKey) {//批量添加字段 /* 注 : 数据里面的第一个key 为主键 @param tableName 表名 @param arr 更新的数据 [{key1:value1 , key2 : value2 ...},{key1:value1 , key2 : value2 ...}] @param callback 回调 @param noKey 第一个字段是否是主键(默认是) */ if(arr==null){ return this; } callback = this.isFunction(callback) ? callback : new Function(); var _me = this, _db = this.database, keyC = [], keyI = [], _key = ''; arr = arr || []; if (arr && arr.constructor == Array) { for(var i in arr[0]){ keyC.push(i); keyI.push(i); } if (noKey==undefined) { keyC[0] = keyC[0] + ' unique'; } _key = keyI.join(","); _db.transaction(function (tx) { ///var csql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')'; // console.log('csql:' + csql); tx.executeSql('CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')'); //var sql = ""; for(var s = 0 , _len = arr.length; s < _len ; s++){ var _value = _me.split(arr[s]); //sql += 'INSERT INTO ' + tableName + ' (' + _key + ') VALUES (' + _value + ')'; //console.log("sql:" + sql); tx.executeSql('INSERT INTO '+tableName+' ('+_key+') VALUES ('+_value+')',[],function (tx, result) { callback(result.rowsAffected); //console.log('添加成功'+result.rowsAffected); },function (tx, error) { console.error('添加失败'); callback(false); }); } _key = keyI = keyC = null; callback(); }); } return this; }, update : function(tableName,key,value,obj,callback){//更新指定数据 /* @param tableName 表名 @param key 查询的键 @param value 对应键的值 @param obj 更新的数据 {key1:value1 , key2 : value2 ...} @param callback 回调 传递参数为真则查询成功 反之更新失败 */ callback = this.isFunction(callback) ? callback : new Function(); var _db = this.database, _value = this.splitU(obj); _db.transaction(function (tx) { //console.log('sql:' + 'UPDATE ' + tableName + ' set ' + _value + ' where ' + key + '="' + value + '"') tx.executeSql('UPDATE '+tableName+' set '+_value+' where '+key+'="'+value+'"',[],function (tx, result) { callback(result.rowsAffected); },function (tx, error) { console.error('更新失败'); callback(false); }); }); return this; }, updateWhere: function (tableName, where, obj, callback) {//更新指定数据 /* @param tableName 表名 @param 查询条件 @param obj 更新的数据 {key1:value1 , key2 : value2 ...} @param callback 回调 传递参数为真则查询成功 反之更新失败 */ callback = this.isFunction(callback) ? callback : new Function(); var _db = this.database, _value = this.splitU(obj); _db.transaction(function (tx) { console.log('UPDATE ' + tableName + ' set ' + _value + ' where ' + where + '"') tx.executeSql('UPDATE ' + tableName + ' set ' + _value + ' where ' + where + '"', [], function (tx, result) { callback(result.rowsAffected); }, function (tx, error) { console.error('更新失败'); callback(false); }); }); return this; }, read : function(tableName,condition,callback){ //读取表数据 /* @param tableName 表名 @param condition 查询条件 'where name="汪文君"' @param callback 回调 传递参数为真则查询成功 反之查询失败 */ var _condition = this.isString(condition) ? condition : ''; var _callback = this.isFunction(condition) ? condition : this.isFunction(callback) ? callback : new Function; var _db = this.database, _me = this, _re = []; _db.transaction(function (tx) { tx.executeSql('SELECT * FROM ' + tableName + ' ' + _condition + ' ', [], function (tx, results) { if(results && results.rows){ _re =_me.toArray(results.rows); _callback(_re); }else{ _callback([]); } },function(tx,error){ _callback([]); console.error('查询失败'); }); }); return this; }, remove:function(tableName,condition,callback){//删除数据 /* @param tableName 表名 @param condition 查询条件 'where name="汪文君"' @param callback 回调 传递参数为真则删除成功 反之删除失败 */ var _me = this; var _condition = this.isString(condition) ? condition : ''; var _callback = this.isFunction(condition) ? condition : this.isFunction(callback) ? callback : new Function; _me.database.transaction(function (tx) { tx.executeSql('DELETE FROM '+tableName+ ' '+ _condition+' ',[],function (tx, result) { _callback(result.rowsAffected); },function (tx, error) { _callback(false); console.error('删除失败'); }); }); }, counts: function (tableName, condition, callback) { //读取表数据 /* @param tableName 表名 @param condition 查询条件 'where name="汪文君"' @param callback 回调 传递参数为真则查询成功 反之查询失败 */ var _condition = this.isString(condition) ? condition : ''; var _callback = this.isFunction(condition) ? condition : this.isFunction(callback) ? callback : new Function; var _db = this.database, _me = this, _re = []; if (mui.os.ios) { //ios下面特有的 _db.transaction(function (tx) { tx.executeSql('SELECT NO FROM ' + tableName + ' ' + _condition + ' ', [], function (tx, results) {// count (*) as num if (results && results.rows) { _re = _me.toArray(results.rows); _callback(_re.length); } else { _callback(0); } }, function (tx, error) { _callback(0); console.error('查询失败'); }); }); } else { _db.transaction(function (tx) { tx.executeSql('SELECT count (*) as num FROM ' + tableName + ' ' + _condition + ' ', [], function (tx, results) {// count (*) as num if (results && results.rows) { if (results.rows[0]) { _callback(results.rows[0].num); } else { _callback(0); } } else { _callback(0); } }, function (tx, error) { _callback(0); console.error('查询失败'); }); }); } return this; }, delTable:function(tableName,callback){ //删除数据表 callback = this.isFunction(callback) ? callback : new Function(); this.database.transaction(function(tx){ tx.executeSql('DROP TABLE IF EXISTS '+tableName,[],function(tx,res){ callback(); },function(tx,err){ console.error(err); }); }); return this; }, splitU: function(obj){//更新字符处理 var _arr = []; for(var t in obj){ _arr.push(t+'="'+obj[t]+'"'); } return _arr.join(','); }, split : function(obj){//添加字符处理 var _arr = []; for(var m in obj){ _arr.push("'"+obj[m]+"'"); } return _arr.join(','); }, isFunction : function(callback){ return typeof callback != 'undefined' && callback.constructor == Function ? true : false }, isString : function(string){ return typeof string == 'string' ? true : false }, toArray : function(obj){ var _arr = [], _len = obj.length; if(_len > 0){ for (var i = 0; i < _len; i++) { _arr.push(obj.item(i)); }; } return _arr; } } win.smpWebSql = smpWebSql; }(window))
上述代码存在的问题非常明显,由于websql操作都是异步操作,当我们为了获取到websql操作的结果之后再进行后续操作时,往往是通过回调函数来实现的,当回调一多的时候,回调地狱就出现了,为了解决回调地狱问题,我将通过Promise来改写,后续调用时,可以直接通过await和async来调用,或者直接通过Promise链式调用也是可以的。
现在我将通过ES6的语法重写之前的封装类,为了应用ES6中js面向对象的思想,我这里用到了class,最终代码如下:
import { browserVersions } from '@/utils/utils.js';
class SmpWebSql {
constructor(options) {
options = options || {};
this.database = null;
this.DateBaseName = options.DateBaseName || 'RedDB';
this.Version = options.Version || '1.0';
this.Description = options.Description || '智维离线工单数据库';
this.DataBaseSize = options.DataBaseSize || 2 * 1024 * 1024;
this.init();
}
/**
* 初始化数据库
*/
init() {
this.database = openDatabase(
this.DateBaseName,
this.Version,
this.Description,
this.DataBaseSize
);
}
/**
* 批量添加字段
* @param {*} tableName 表名
* @param {*} arr 更新的数据 [{key1:value1 , key2 : value2 ...},{key1:value1 , key2 : value2 ...}]
* @param {*} index BLOG字段所在的索引位置
* @param {*} isFirst 是否是第一次创建表
*/
addBlob(tableName, arr, index, isFirst = true) {
var _db = this.database;
var _me = this;
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
if (arr == null) {
return this;
}
var keyC = [];
var keyI = [];
var _key = '';
arr = arr || [];
if (arr && arr.constructor == Array) {
for (var i in arr[0]) {
keyC.push(i);
keyI.push(i);
}
keyC[0] = keyC[0] + ' unique';
_key = keyI.join(',');
index = index == undefined ? 0 : index;
keyC[index] = keyC[index] + ' BLOB';
// eslint-disable-next-line promise/param-names
_db.transaction(function(tx, result) {
// var csql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')';
// console.log('csql:' + csql);
if (isFirst == true) {
tx.executeSql(
'CREATE TABLE IF NOT EXISTS ' +
tableName +
' (' +
keyC.join(',') +
')'
);
}
// var sql = "";
for (var s = 0, _len = arr.length; s < _len; s++) {
var _value = _me.split(arr[s]);
// sql += 'INSERT INTO ' + tableName + ' (' + _key + ') VALUES (' + _value + ')';
// console.log("sql:" + sql);
tx.executeSql(
'INSERT INTO ' +
tableName +
' (' +
_key +
') VALUES (' +
_value +
')',
[],
function(tx, result) {
resovle(result.rowsAffected);
console.log('添加成功' + result.rowsAffected);
},
function(tx) {
console.error('添加失败');
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
}
);
}
_key = keyI = keyC = null;
resovle(arr.length);
});
}
}).catch(error => {
console.log('error :', error);
});
}
/**
* 批量添加字段
* @param {*} tableName 表名
* @param {*} arr 更新的数据 [{key1:value1 , key2 : value2 ...},{key1:value1 , key2 : value2 ...}]
* @param {*} index BLOG字段所在的索引位置
* @param {*} firstKey firstKey 第一个字段是否是主键(默认是)
* @param {*} isFirst 是否是第一次创建表
*/
patchAddBlob(tableName, arr, index, firstKey = true, isFirst = true) {
var _db = this.database;
var _me = this;
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
if (arr == null) {
return this;
}
var keyC = [];
var keyI = [];
var _key = '';
arr = arr || [];
if (arr && arr.constructor == Array) {
for (var i in arr[0]) {
keyC.push(i);
keyI.push(i);
}
if (firstKey) {
keyC[0] = keyC[0] + ' unique';
}
_key = keyI.join(',');
index = index == undefined ? 0 : index;
keyC[index] = keyC[index] + ' text';
// eslint-disable-next-line promise/param-names
_db.transaction(function(tx, result) {
// var csql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')';
// console.log('csql:' + csql);
if (isFirst == true) {
tx.executeSql(
'CREATE TABLE IF NOT EXISTS ' +
tableName +
' (' +
keyC.join(',') +
')'
);
}
var sql = '';
var _values = [];
for (var s = 0, _len = arr.length; s < _len; s++) {
_values.push('(' + _me.split(arr[s]) + ')');
}
sql =
'INSERT INTO ' +
tableName +
' (' +
_key +
') VALUES ' +
_values.join(',');
// console.log('sql:' + sql);
tx.executeSql(
sql,
[],
function(tx, result) {
resovle(result.rowsAffected);
// console.log('添加成功'+result.rowsAffected);
},
function(tx, error) {
console.error('添加失败', tx, error);
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
}
);
_key = keyI = keyC = null;
resovle(arr.length);
});
}
}).catch(error => {
console.log('error :', error);
});
}
/**
* 批量添加字段 注 : 数据里面的第一个key 为主键
* @param {*} tableName 表名
* @param {*} arr arr 更新的数据 [{key1:value1 , key2 : value2 ...},{key1:value1 , key2 : value2 ...}]
* @param {*} firstKey firstKey 第一个字段是否是主键(默认是)
*/
add(tableName, arr, firstKey = true) {
var _me = this;
var _db = this.database;
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
if (arr == null) {
return this;
}
var keyC = [];
var keyI = [];
var _key = '';
arr = arr || [];
if (arr && arr.constructor == Array) {
for (var i in arr[0]) {
keyC.push(i);
keyI.push(i);
}
if (firstKey) {
keyC[0] = keyC[0] + ' unique';
}
_key = keyI.join(',');
_db.transaction(function(tx) {
// /var csql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')';
// console.log('csql:' + csql);
tx.executeSql(
'CREATE TABLE IF NOT EXISTS ' +
tableName +
' (' +
keyC.join(',') +
')'
);
// var sql = "";
for (var s = 0, _len = arr.length; s < _len; s++) {
var _value = _me.split(arr[s]);
// sql += 'INSERT INTO ' + tableName + ' (' + _key + ') VALUES (' + _value + ')';
// console.log("sql:" + sql);
tx.executeSql(
'INSERT INTO ' +
tableName +
' (' +
_key +
') VALUES (' +
_value +
')',
[],
function(tx, result) {
resovle(result.rowsAffected);
// console.log('添加成功'+result.rowsAffected);
},
function(tx, error) {
console.error('添加失败', error);
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
}
);
}
_key = keyI = keyC = null;
resovle(arr.length);
});
}
}).catch(error => {
console.log('error :', error);
});
}
/**
* 批量添加行记录 注 : 数据里面的第一个key 为主键
* @param {*} tableName 表名
* @param {*} arr arr 更新的数据 [{key1:value1 , key2 : value2 ...},{key1:value1 , key2 : value2 ...}]
* @param {*} firstKey firstKey 第一个字段是否是主键(默认是)
*/
patchAdd(tableName, arr, firstKey = true) {
var _me = this;
var _db = this.database;
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
if (arr == null) {
return this;
}
var keyC = [];
var keyI = [];
var _key = '';
arr = arr || [];
if (arr && arr.constructor == Array) {
for (var i in arr[0]) {
keyC.push(i);
keyI.push(i);
}
if (firstKey) {
keyC[0] = keyC[0] + ' unique';
}
_key = keyI.join(',');
_db.transaction(function(tx) {
// /var csql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (' + keyC.join(",") + ')';
// console.log('csql:' + csql);
tx.executeSql(
'CREATE TABLE IF NOT EXISTS ' +
tableName +
' (' +
keyC.join(',') +
')'
);
var sql = '';
var _values = [];
for (var s = 0, _len = arr.length; s < _len; s++) {
_values.push('(' + _me.split(arr[s]) + ')');
}
sql =
'INSERT INTO ' +
tableName +
' (' +
_key +
') VALUES ' +
_values.join(',');
console.log('sql:' + sql);
tx.executeSql(
sql,
[],
function(tx, result) {
resovle(result.rowsAffected);
// console.log('添加成功'+result.rowsAffected);
},
function(tx, error) {
console.error('添加失败');
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
}
);
_key = keyI = keyC = null;
resovle(arr.length);
});
}
}).catch(error => {
console.log('error :', error);
});
}
/**
* 更新指定数据
* @param {*} tableName 表名
* @param {*} key 查询的键
* @param {*} value 对应键的值
* @param {*} obj obj 更新的数据 {key1:value1 , key2 : value2 ...}
*/
update(tableName, key, value, obj) {
var _db = this.database;
var _value = this.splitU(obj);
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
_db.transaction(function(tx) {
// console.log('sql:' + 'UPDATE ' + tableName + ' set ' + _value + ' where ' + key + '="' + value + '"')
tx.executeSql(
'UPDATE ' +
tableName +
' set ' +
_value +
' where ' +
key +
'="' +
value +
'"',
[],
function(tx, result) {
resovle(result.rowsAffected);
},
function(tx, error) {
console.error('更新失败');
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
}
);
});
}).catch(error => {
console.log('error :', error);
});
}
/**
* 更新指定数据
* @param {*} tableName 表名
* @param {*} condition 查询条件
* @param {*} obj obj 更新的数据 {key1:value1 , key2 : value2 ...}
*/
updateWhere(tableName, condition, obj) {
var _db = this.database;
var _value = this.splitU(obj);
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
_db.transaction(function(tx) {
console.log('UPDATE ' + tableName + ' set ' + _value + ' ' + condition);
tx.executeSql(
'UPDATE ' + tableName + ' set ' + _value + +' ' + condition,
[],
function(tx, result) {
resovle(result.rowsAffected);
},
function(tx, error) {
console.error('更新失败', error);
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
}
);
});
}).catch(error => {
console.log('error :', error);
});
}
/**
* 读取表数据
* @param {*} tableName 表名
* @param {*} condition 查询条件 'where name="jiekzou"'
*/
read(tableName, condition) {
var _db = this.database;
var _me = this;
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
var _condition = _me.isString(condition) ? condition : '';
var _re = [];
_db.transaction(function(tx) {
tx.executeSql(
'SELECT * FROM ' + tableName + ' ' + _condition + ' ',
[],
function(tx, results) {
if (results && results.rows) {
_re = _me.toArray(results.rows);
resovle(_re);
} else {
resovle([]);
}
},
function(tx, error) {
// eslint-disable-next-line prefer-promise-reject-errors
reject([]);
console.error('查询失败', error);
}
);
});
}).catch(error => {
console.log('error :', error);
});
}
/**
* 读取表数据
* @param {*} tableName 表名
* @param {*} field 查询字段,逗号隔开
* @param {*} condition 查询条件 'where name="jiekzou"'
*/
readField(tableName, field = '*', condition) {
var _db = this.database;
var _me = this;
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
var _condition = _me.isString(condition) ? condition : '';
var _re = [];
_db.transaction(function(tx) {
tx.executeSql(
'SELECT ' + field + ' FROM ' + tableName + ' ' + _condition + ' ',
[],
function(tx, results) {
if (results && results.rows) {
_re = _me.toArray(results.rows);
resovle(_re);
} else {
resovle([]);
}
},
function(tx, error) {
// eslint-disable-next-line prefer-promise-reject-errors
reject([]);
console.error('查询失败');
}
);
});
}).catch(error => {
console.log('error :', error);
});
}
/**
* 删除数据
* @param {*} tableName 表名
* @param {*} condition 查询条件 'where name="jiekzou"'
*/
remove(tableName, condition) {
var _me = this;
var _condition = _me.isString(condition) ? condition : '';
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
_me.database.transaction(function(tx) {
tx.executeSql(
'DELETE FROM ' + tableName + ' ' + _condition + ' ',
[],
function(tx, result) {
resovle(result.rowsAffected);
},
function(tx, error) {
// eslint-disable-next-line prefer-promise-reject-errors
reject(false);
console.error('删除失败');
}
);
});
}).catch(error => {
console.log('error :', error);
});
}
/**
* 根据查询条件读取表记录数
* @param {*} tableName 表名
* @param {*} condition 查询条件 'where name="jiekzou"'
*/
counts(tableName, condition) {
try {
if (browserVersions.android) {
return this.androidCounts(tableName, condition);
} else {
return this.iosCounts(tableName, condition);
}
} catch {
return 0;
}
}
// ios下面特有的
/**
* 读取表数据(ios下面特有的)
* @param {*} tableName 表名
* @param {*} condition 查询条件 'where name="jiekzou"'
*/
iosCounts(tableName, condition) {
var _db = this.database;
var _me = this;
var _condition = _me.isString(condition) ? condition : '';
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
var _re = [];
_db.transaction(function(tx) {
tx.executeSql(
'SELECT 1 FROM ' + tableName + ' ' + _condition + ' ',
[],
function(tx, results) {
// count (*) as num
if (results && results.rows) {
_re = _me.toArray(results.rows);
resovle(_re.length);
} else {
resovle(0);
}
},
function(tx, error) {
// eslint-disable-next-line prefer-promise-reject-errors
reject(0);
console.error('查询失败', error);
}
);
});
}).catch(e => {
console.log('e :', e);
// eslint-disable-next-line no-undef
// reject(0);
});
}
/**
* 读取表数据(Android)
* @param {*} tableName 表名
* @param {*} condition 查询条件 'where name="jiekzou"'
*/
androidCounts(tableName, condition) {
var _db = this.database;
var _me = this;
var _condition = _me.isString(condition) ? condition : '';
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
var _re = [];
_db.transaction(function(tx) {
tx.executeSql(
'SELECT count (*) as num FROM ' + tableName + ' ' + _condition + ' ',
[],
function(tx, results) {
// count (*) as num
if (results && results.rows) {
if (results.rows[0]) {
resovle(results.rows[0].num);
} else {
resovle(0);
}
} else {
resovle(0);
}
},
function(tx, error) {
// eslint-disable-next-line prefer-promise-reject-errors
reject(0);
console.error('查询失败');
}
);
});
}).catch(e => {
console.log('e :', e);
// eslint-disable-next-line no-undef
// reject(0);
});
}
/**
* 删除数据表
* @param {*} tableName 表名
*/
delTable(tableName) {
var _db = this.database;
console.log('_db :', _db);
// eslint-disable-next-line promise/param-names
return new Promise(function(resovle, reject) {
_db.transaction(function(tx) {
tx.executeSql(
'DROP TABLE IF EXISTS ' + tableName,
[],
function(tx, res) {
resovle(1);
},
function(tx, err) {
console.error(err);
// eslint-disable-next-line prefer-promise-reject-errors
reject(0);
}
);
});
});
}
// 更新字符处理
splitU(obj) {
var _arr = [];
for (var t in obj) {
_arr.push(t + '=\'' + obj[t] + '\'');
}
return _arr.join(',');
}
// 添加字符处理
split(obj) {
var _arr = [];
for (var m in obj) {
_arr.push('\'' + obj[m] + '\'');
}
return _arr.join(',');
}
isFunction(callback) {
return !!(
typeof callback != 'undefined' && callback.constructor == Function
);
}
isString(string) {
return typeof string == 'string';
}
toArray(obj) {
var _arr = [];
var _len = obj.length;
if (_len > 0) {
for (var i = 0; i < _len; i++) {
_arr.push(obj.item(i));
}
}
return _arr;
}
}
export default SmpWebSql;
| 博客地址: | http://www.cnblogs.com/jiekzou/ | |
| 博客版权: | 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。 |
|
| 其它: |
.net-QQ群4:612347965
java-QQ群:805741535
H5-QQ群:773766020 |

浙公网安备 33010602011771号