mirror of
https://github.com/xuxiaobo-bobo/boda_jsEnv.git
synced 2025-04-22 18:26:01 +08:00
245 lines
7.0 KiB
JavaScript
245 lines
7.0 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
|
||
//先执行微任务,在执行宏任务
|
||
let HTMLElement_promise=bodavm.memory.asyncEvent['HTMLElement']
|
||
for (const key in HTMLElement_promise) {
|
||
let leng_=HTMLElement_promise[key].length
|
||
for (let i = 0; i < leng_; i++) {
|
||
console.log(`HTMLElement_promise异步事件执行`,`type:${HTMLElement_promise[key]}`,`func:${HTMLElement_promise[key][i]}`);
|
||
HTMLElement_promise[key][i]()
|
||
|
||
}
|
||
|
||
}
|
||
// debugger
|
||
// addEventListener 比settimeout先执行
|
||
// // debugger
|
||
|
||
//setTimeout
|
||
|
||
|
||
noexecListener={
|
||
'unload':true,
|
||
'popstate':true,
|
||
'driver-evaluate':true,
|
||
'webdriver-evaluate':true,
|
||
'contextmenu':true,
|
||
'selenium-evaluate':true,
|
||
'error':true
|
||
}
|
||
|
||
// addEventListener 比settimeout先执行
|
||
if (bodavm.memory.asyncEvent.listener) {
|
||
for (const key in bodavm.memory.asyncEvent.listener) {
|
||
let event = bodavm.memory.asyncEvent.listener[key]
|
||
debugger
|
||
for (let i = 0; i < event.length; i++) {
|
||
// debugger
|
||
if (noexecListener[event[i].type]){
|
||
console.log(`开始执行浏览器事件==========`,`当前为事件类型为==>: ${event[i].type} 无需执行`);
|
||
continue
|
||
}
|
||
console.log(`开始执行浏览器事件==========`,`当前为事件类型为==>: ${event[i].type}`);
|
||
|
||
try{
|
||
window.dispatchEvent(event[i],'bobobo')
|
||
}catch{
|
||
console.log(`浏览器事件执行失败==========`,`当前为事件类型为==>: ${event[i].type}`);
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
|
||
// let setTimeEvent = bodavm.memory.asyncEvent.setTimeout
|
||
// console.log(`当前setTimeEvent有===>${JSON.stringify(setTimeEvent)}`)
|
||
// if (setTimeEvent) {
|
||
// setTimeEvent.sort((a, b) => {
|
||
// return a.timeoutID > b.timeoutID ? 1 : -1;
|
||
// })
|
||
// setTimeEvent.sort((a, b) => {
|
||
// return a.delay > b.delay ? 1 : -1;
|
||
// })
|
||
// for (let i = 0; i < setTimeEvent.length; i++) {
|
||
// let event = setTimeEvent[i]
|
||
// if (event == undefined) { continue }
|
||
// console.log(`异步回调执行settime=======================================>${JSON.stringify(event)} callback:${event.callback}`);
|
||
// if (event.type) {
|
||
// event.callback()
|
||
// } else {
|
||
// eval(event.callback)
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
// 鼠标事件最后执行,模仿网站加载完成后再移动鼠标触发事件
|
||
// //鼠标轨迹,获取实际网站的
|
||
// let mouseEvent = [
|
||
|
||
// {
|
||
// "clientX": 154,
|
||
// "clientY": 514,
|
||
// "timeStamp": 14198.5,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 154,
|
||
// "clientY": 513,
|
||
// "timeStamp": 14203.700000001118,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 154,
|
||
// "clientY": 511,
|
||
// "timeStamp": 14211.5,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 154,
|
||
// "clientY": 508,
|
||
// "timeStamp": 14219.700000001118,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 155,
|
||
// "clientY": 506,
|
||
// "timeStamp": 14227.5,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 157,
|
||
// "clientY": 503,
|
||
// "timeStamp": 14236,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 158,
|
||
// "clientY": 498,
|
||
// "timeStamp": 14243.599999999627,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 160,
|
||
// "clientY": 495,
|
||
// "timeStamp": 14251.900000000373,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 162,
|
||
// "clientY": 492,
|
||
// "timeStamp": 14260.300000000745,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 162,
|
||
// "clientY": 490,
|
||
// "timeStamp": 14268.700000001118,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 164,
|
||
// "clientY": 487,
|
||
// "timeStamp": 14276,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 165,
|
||
// "clientY": 486,
|
||
// "timeStamp": 14283.599999999627,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 165,
|
||
// "clientY": 485,
|
||
// "timeStamp": 14292.099999999627,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 166,
|
||
// "clientY": 485,
|
||
// "timeStamp": 14299.599999999627,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 166,
|
||
// "clientY": 484,
|
||
// "timeStamp": 14308,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 166,
|
||
// "clientY": 484,
|
||
// "timeStamp": 14497.900000000373,
|
||
// "type": "mousedown"
|
||
// },
|
||
// {
|
||
// "clientX": 166,
|
||
// "clientY": 484,
|
||
// "timeStamp": 14506.800000000745,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 166,
|
||
// "clientY": 484,
|
||
// "timeStamp": 14515.800000000745,
|
||
// "type": "mousemove"
|
||
// },
|
||
// {
|
||
// "clientX": 166,
|
||
// "clientY": 484,
|
||
// "timeStamp": 14555.800000000745,
|
||
// "type": "mouseup"
|
||
// }
|
||
// ];
|
||
|
||
|
||
// // debugger
|
||
// if (bodavm.memory.asyncEvent.listener) {
|
||
// for (let i = 0; i < mouseEvent.length; i++) {
|
||
// let event = mouseEvent[i];
|
||
// let type = event.type;
|
||
// let mouseEventObj = {
|
||
// "isTrusted": true
|
||
// };
|
||
// mouseEventObj = Object.setPrototypeOf(mouseEventObj, MouseEvent.prototype);
|
||
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "clientX", event.clientX);
|
||
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "clientY", event.clientY);
|
||
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "timeStamp", event.timeStamp);
|
||
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "type", event.type);
|
||
// //bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "pagex", event.type);
|
||
// let listenerList = bodavm.memory.asyncEvent.listener[type];
|
||
// //debugger;
|
||
// console.log(`listenerList====>`, listenerList)
|
||
|
||
// if(listenerList ==undefined){debugger;continue}
|
||
// for (let j = 0; j < listenerList.length; j++) {
|
||
// let callBack = listenerList[j].listener;
|
||
// let self = listenerList[j].self;
|
||
// console.log(`执行异步回调second=======>`, `self:${self} mouseEventObj:${mouseEventObj}`);
|
||
// callBack.call(self, mouseEventObj);
|
||
|
||
// }
|
||
|
||
// }
|
||
// }
|
||
|
||
|