mirror of
https://github.com/xuxiaobo-bobo/boda_jsEnv.git
synced 2025-04-21 20:55:21 +08:00
90 lines
2.4 KiB
JavaScript
90 lines
2.4 KiB
JavaScript
//异步;;;
|
||
// 宏队列,macrotask,也叫tasks.一些异步任务的回调会依次进入 macro task queue,等待后渎被调用,这些异步任务包括:
|
||
|
||
// setTimeout
|
||
// setInterval
|
||
// setImmediate(Node独有)
|
||
// requestAnimationFrame(浏览器独有)
|
||
// I/O
|
||
// UI rendering(浏览器独有)
|
||
|
||
|
||
// 微队列,microtask,也叫jobs。另一些异步任务的回调会依次进入micro task queue,等待后渎被调用,这些异步任务包括:
|
||
// process.nextTick(Node独有)
|
||
// Promise
|
||
// Object.observe
|
||
// MutationObserver
|
||
//先执行微任务,在执行宏任务
|
||
|
||
|
||
//html的onload未实现
|
||
// onload:[{self:'',callback:''}]
|
||
let HTMLElement_promise=bodavm.memory.asyncEvent['HTMLElement']['onload']
|
||
console.log_copy(`开始执行HtmlElement====> onload事件=============>`,);
|
||
for (let eleIndex= 0; eleIndex< HTMLElement_promise.length; eleIndex++) {
|
||
event=HTMLElement_promise[eleIndex]
|
||
debugger
|
||
let self=event['self']
|
||
let callbk=event['callback']
|
||
console.log_copy(`开始执行HtmlElement load 事件==========`,`当前为事件元素为==>: ${self} `,` ==> callback =>`,callbk);
|
||
callbk.call(self)
|
||
}
|
||
// debugger
|
||
// addEventListener 比settimeout先执行
|
||
// // debugger
|
||
|
||
//setTimeout
|
||
|
||
|
||
|
||
if (bodavm.memory.asyncEvent.listener){
|
||
// debugger
|
||
console.log_copy(`开始执行addlistener ====> load事件=============>`,);
|
||
let loadEvent = bodavm.memory.asyncEvent.listener['load']
|
||
if (loadEvent){
|
||
for (let i = 0; i < loadEvent.length; i++) {
|
||
// debugge
|
||
// debugger
|
||
console.log_copy(`开始执行浏览器 load 事件==========`,`当前为事件类型为==>: ${loadEvent[i].type} `);
|
||
window.dispatchEvent(loadEvent[i],'bobobo')
|
||
|
||
}
|
||
}
|
||
console.log_copy(`执行结束addlistener ====> load事件=============>`,);
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
console.log_copy(`开始执行 window.onload 事件====> load事件=============>`,);
|
||
debugger
|
||
if(window.onload){
|
||
window.onload()
|
||
console.log_copy(`执行结束 window.onload 事件====> load事件=============>`,);
|
||
|
||
}else{
|
||
console.log_copy(`执行结束 window.onload 事件====> load事件=============>`,);
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
debugger
|
||
|
||
|
||
|
||
|
||
if (bodavm.memory.waitExec.length) {
|
||
// debugger
|
||
for (let index = 0; index < bodavm.memory.waitExec.length; index++) {
|
||
let _scriptElement = bodavm.memory.waitExec[index];
|
||
let _scriptCode = bodaParseScript(_scriptElement)
|
||
eval(_scriptCode)
|
||
|
||
}
|
||
|
||
bodavm.memory.waitExec = []
|
||
}
|