Jos*_*ana 1 javascript html5 indexeddb
我有一个关于JavaScript函数的问题.
例如,请参考以下代码.
我假设'open'函数触发'success'事件函数.但是这怎么可行呢,因为'open'函数在调用'open'函数后被附加到openRequest ?
var indexedDB = window.indexedDB;
var openRequest = indexedDB.open('MyTestDB');
openRequest.onsuccess = function (response) {
    alert('sucess');
};
Run Code Online (Sandbox Code Playgroud)
    调用indexDB.open是异步的.它立即返回,其余代码继续运行.实际打开db时会触发事件.此事件放在事件队列中.JavaScript解释器定期检查事件队列.但是解释器也是单线程的.它不会跳出正在执行的当前代码来检查它.onsuccess函数在定义之前永远不会被调用.事实上,DB本身永远不会被打开.
例如,如果在代码末尾添加无限循环,则永远不会运行onsucess函数.
var indexedDB = window.indexedDB;
var openRequest = indexedDB.open('MyTestDB');
openRequest.onsuccess = function (response) {
    alert('sucess');
};
while (true) {};
Run Code Online (Sandbox Code Playgroud)
此时执行将被阻止,解释器永远不会检查事件队列,也不会运行on success success函数.
http://javascript.info/tutorial/events-and-timing-depth
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           194 次  |  
        
|   最近记录:  |