通过游标实现oncomplete的正确方法
Correct method to implement the oncomplete through a cursor
你好,我在实现打开游标的oncomplete方法时遇到了一些困难。由于 seat 是异步的,他对代码的下一部分进行申请和分部,并且不可能在函数外观察到函数的 return。会有更好的方法吗?或者如何解决 return 的问题?作为实现 oncomplete ?代码下方:
for(var i = 0; i < tam; i++){
var objectStorePresenca = db.transaction("tbl_PRESENCA").objectStore("tbl_PRESENCA");
var indexPresenca = objectStorePresenca.index("COD_IDENT_REUNI");
indexPresenca.openCursor(objetoReuniao[i].COD_IDENT_REUNI).onsuccess = function (event){
var vetor = event.target.result;
if (vetor) {
var obj = new Object();
obj.CODIGO_REUNIAO = vetor.value.COD_IDENT_REUNI;
obj.COD_IDENT_PESSO = vetor.value.COD_IDENT_PESSO;
obj.FLG_IDENT_PRESE = vetor.value.FLG_IDENT_PRESE;
ausentes.push(obj);
vetor.continue();
}/*else{
console.log(ausentes);
console.log(objetoReuniao);
// presentes.push(objetoReuniao);
// console.log(presentes);
}*/
}
}
谢谢
我不知道您是在问如何观察在事务中触发的 "complete" 事件,还是在不能简单地 return 一个值的情况下如何编写异步代码。
#1:如何观察"complete"事件。
var tx = db.transaction("tbl_PRESENCA");
tx.oncomplete = function() {
console.log("transaction is complete");
};
var objectStorePresenca = tx.objectStore("tbl_PRESENCA");
#2:如何 return 来自异步代码的值。
function yourFunction(callback) {
var objectStorePresenca = ...;
var indexPresenca = ...;
indexPresenca.openCursor(...).onsuccess = function (event){
var vetor = event.target.result;
if (vetor) {
...
vetor.continue();
} else {
callback();
}
};
}
yourFunction(function() {
console.log("cursor has hit end of range");
});
你好,我在实现打开游标的oncomplete方法时遇到了一些困难。由于 seat 是异步的,他对代码的下一部分进行申请和分部,并且不可能在函数外观察到函数的 return。会有更好的方法吗?或者如何解决 return 的问题?作为实现 oncomplete ?代码下方:
for(var i = 0; i < tam; i++){
var objectStorePresenca = db.transaction("tbl_PRESENCA").objectStore("tbl_PRESENCA");
var indexPresenca = objectStorePresenca.index("COD_IDENT_REUNI");
indexPresenca.openCursor(objetoReuniao[i].COD_IDENT_REUNI).onsuccess = function (event){
var vetor = event.target.result;
if (vetor) {
var obj = new Object();
obj.CODIGO_REUNIAO = vetor.value.COD_IDENT_REUNI;
obj.COD_IDENT_PESSO = vetor.value.COD_IDENT_PESSO;
obj.FLG_IDENT_PRESE = vetor.value.FLG_IDENT_PRESE;
ausentes.push(obj);
vetor.continue();
}/*else{
console.log(ausentes);
console.log(objetoReuniao);
// presentes.push(objetoReuniao);
// console.log(presentes);
}*/
}
}
谢谢
我不知道您是在问如何观察在事务中触发的 "complete" 事件,还是在不能简单地 return 一个值的情况下如何编写异步代码。
#1:如何观察"complete"事件。
var tx = db.transaction("tbl_PRESENCA");
tx.oncomplete = function() {
console.log("transaction is complete");
};
var objectStorePresenca = tx.objectStore("tbl_PRESENCA");
#2:如何 return 来自异步代码的值。
function yourFunction(callback) {
var objectStorePresenca = ...;
var indexPresenca = ...;
indexPresenca.openCursor(...).onsuccess = function (event){
var vetor = event.target.result;
if (vetor) {
...
vetor.continue();
} else {
callback();
}
};
}
yourFunction(function() {
console.log("cursor has hit end of range");
});