[英]clearInterval and resolve() not working if executed from class
我的课:
var indexedDBInitInterval; // clearInterval Doesnt work when done from within class for some reason..
var coumter = 1;
class IndexedDBWrapper {
constructor() {
this._db = undefined
this._dbInitInterval = undefined
this.dbInitRequest = indexedDB.open("someDB", 1)
this.dbInitRequest.onerror = (event) => { this.dbInitRequestOnError(event) }
this.dbInitRequest.onsuccess = (event) => { this.dbInitRequestOnSuccess(event) }
this.dbInitRequest.onupgradeneeded = (event) => { this.dbInitRequestOnUpgradedeNeeded(event) }
}
isDBInitalized() {
return new Promise((resolve) => {
indexedDBInitInterval = setInterval(() => {
log(this.dbInitRequest)
log(this.dbInitRequest.readyState)
log(indexedDBInitInterval)
coumter = coumter + 1
if (this.dbInitRequest.readyState == "done") {
log("mutants")
log(coumter)
log(clearInterval(indexedDBInitInterval))
resolve()
}
}, 300)
})
}
dbInitRequestOnError(event) {
log("Error initializing IndexedDB: ")
log(event)
}
并调用:
indexedDBWrapper.isDBInitalized().then(() => {
clearInterval 或 resolve 都不会被触发,即使log("mutants")
被触发。
多么拼图啊。。
你会想使indexedDBInitInterval
内的变量isDBInitialized
。 否则,如果您多次(甚至在多个对象上)调用该函数,它们会相互干扰。 对于coumter
也可以这样说,尽管这可能只是一个调试变量。
indexedDBWrapper.isDBInitalized().then(() => console.log('OK'))
打印OK
吗? 如果使用了错误的indexedDBInitInterval
,我可以理解clearInterval
失败,但是记录的mutants
应该表明resolve()
也被调用,除非两者之间发生错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.