美好的一天,我在执行关于打开游标的oncomplete方法时遇到了一些困难。由于座椅是异步的,因此他提出请求并参与代码的下一部分,并且无法观察函数外部函数的返回。有更好的方法来做到这一点?或者如何解决退货问题?实现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);
}*/
}
}
谢谢
答案 0 :(得分:2)
我不知道你是否在询问如何观察在事务中触发的“完整”事件,或者如何在不能简单地返回值的情况下编写异步代码。
#1:如何观察“完整”事件。
var tx = db.transaction("tbl_PRESENCA");
tx.oncomplete = function() {
console.log("transaction is complete");
};
var objectStorePresenca = tx.objectStore("tbl_PRESENCA");
#2:如何从异步代码中返回值。
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");
});