Javascript 承诺在angularjs中不为IndexedDB工作
我有一个使用IndexedDB的应用程序。最初我大量使用回调,并决定使用angularjs promisesJavascript 承诺在angularjs中不为IndexedDB工作,javascript,angularjs,indexeddb,angular-promise,Javascript,Angularjs,Indexeddb,Angular Promise,我有一个使用IndexedDB的应用程序。最初我大量使用回调,并决定使用angularjs promises$q清理回调 失败 这把小提琴表明了我的期望 创建的任何数据库都将被删除。 然后 数据库已打开,需要触发ONUPGRADE 然后 数据库被引用 不幸的是,thenstations似乎在IDB调用的onsuccess方法中解析承诺之前被调用 要重新创建,请在控制台打开的情况下运行JSFIDLE。可能需要运行它几次才能获得异常,但它失败的次数最多,因为在调用数据库open上的onsucces
$q
清理回调
失败
这把小提琴表明了我的期望
then
stations似乎在IDB调用的onsuccess方法中解析承诺之前被调用
要重新创建,请在控制台打开的情况下运行JSFIDLE。可能需要运行它几次才能获得异常,但它失败的次数最多,因为在调用数据库open上的onsuccess之前调用了last then子句
有什么想法吗?我认为问题在于承诺链。Angular的文档有点混乱,但似乎回调方法的返回值是一个承诺,它将使用一个值进行解析;不是承诺。因此,打破了链条 发件人:
然后(successCallback、errorCallback、notifyCallback)
–不管
当承诺被或将被解决或拒绝时,则调用一个
一旦结果出现,成功或错误的消息将立即异步回调
有空。调用回调时使用一个参数:
结果或拒绝原因。此外,通知回调可能是
调用零次或多次以提供进度指示,然后
承诺被解决或拒绝
此方法返回一个新的承诺,该承诺通过
successCallback的返回值errorCallback(除非
价值是一种承诺,在这种情况下,它与
在该承诺中解决(使用)。它还通知
通过notifyCallback方法的返回值。承诺是不可能的
无法从notifyCallback方法中解析或拒绝
我可以使用以下命令对其进行初始化:
angular.module('IDBTest')
.run(['initSvc', function (initSvc) {
initSvc.deleteDB()
.then(function() {
return initSvc.open('testDatabase');
})
.then(function () {
console.log(initSvc.db.name + ' initialized');
});
}]);
这有帮助是的,确实有帮助。谢谢我需要找到一个图腾。
angular.module('IDBTest')
.run(['initSvc', function (initSvc) {
initSvc.deleteDB()
.then(function() {
return initSvc.open('testDatabase');
})
.then(function () {
console.log(initSvc.db.name + ' initialized');
});
}]);