xuxiaobo-bobo 4f694776db 0802
2023-08-02 11:39:41 +08:00

90 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//异步;;;
// 宏队列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 = []
}