Indexeddb: Diferenças entre o sucesso e o oncomplete?

Eu uso dois eventos diferentes para o retorno de chamada para responder quando a transação IndexedDB termina ou é bem-sucedida:

Digamos que ... db: objeto IDBDatabase, tr: objeto IDBTransaction, objeto os: IDBObjectStore

tr = db.transaction(os_name,'readwrite');
os = tr.objectStore();

caso 1 :

r = os.openCursor();
r.onsuccess = function(){
    if(r.result){
        callback_for_result_fetched();
        r.result.continue;
    }else callback_for_transaction_finish();
}

caso 2:

tr.oncomplete = callback_for_transaction_finish();

É um desperdício se ambos funcionarem de forma semelhante. Então você pode me dizer, existe alguma diferença entre eles?

questionAnswers(3)

yourAnswerToTheQuestion