繫結事件 事件佇列 事件迴圈

2022-09-22 01:33:10 字數 1846 閱讀 8426

一、繫結事件

1.html元素內繫結

2.js繫結事件

3.事件監聽繫結

1  點我一哈

2 我是js事件

3 我是監聽事件

4

二、定時器

1.settimeout延時器延時執行只執行一次

語法:settimeout(callback,delay);

2.清除延時器:cleartimeout(定時器名稱)

3.setinterval計時器間隔時間執行一次若不手動清除會一直存在

語法:setinterval(callback,time)

4.清除計時器

語法:clearinterval(callback,time)

三、事件佇列

j**ascript語言的一大特點就是單執行緒,也就是說,同乙個時間只能做一件事

事件佇列就是把一些不按順序執行的事件放到佇列裡面,然後按照自己制定的順序去執行。

settimeout(()=>,2000)

let n=89;

console.log(n);

//89

//10

四、事件迴圈機制

1.執行棧和執行上下文

全域性執行上下文:任何不在函式內的**在全域性執行上下文中,它會執行兩件事:建立windws全域性物件並設定this的值等於這個全域性物件。

函式執行上下文:當函式被呼叫時,都會建立乙個新的上下文

執行棧:呼叫棧

2.事件迴圈

1)當主線任務在執行時,會形成棧和堆;

2)js從上到下解析,按順序完成同步任務;

3)當呼叫外部api時(settimeout、ajax),會將此類非同步任務掛起,繼續執行執行棧中的任務,等非同步任務返回結果後,再按照執行順序排列到事件佇列中;

4)主線程先將執行棧中的同步任務清空,然後檢查事件佇列中是否有任務,如果有,就將第乙個事件對應的**推到執行棧中執行,若在執行過程中遇到非同步任務,則繼續將這個非同步任務排列到事件佇列中。

5)主線程每次將執行棧清空後,就去事件佇列中檢查是否有任務,如果有,就每次取出乙個推到執行棧中執行,這個過程是迴圈往復的... ...,這個過程被稱為「event loop 事件迴圈」。

console.log(1);

settimeout(() =>, 0) ;

}, 0) ;

}, 0);

settimeout(() =>, 0);

}, 0);

console.log('ok');

//輸出:1 ok 2 5 3 6 4

js 事件迴圈,非同步,事件佇列

首先,現附上我查詢資料中用到較好的一張圖 這裡面就對事件迴圈,任務佇列,非同步操作介紹的很詳細.我的理解 較為粗略的一張圖 我認為的事件迴圈的主要邏輯 1.取乙個巨集任務來執行,執行完畢,下一步.2.取乙個微任務來執行,執行完畢,再取乙個微任務來執行,直到微任務全部取完.3.更新ui渲染 概念 巨集...

事件迴圈中事件佇列的順序

同步任務 nexttick 函式佇列 微任務 promise 函式佇列 微任務 timeout,interval定時器任務佇列 巨集任務 i o事件任務佇列,如http請求 檔案讀寫等 巨集任務 immediate任務佇列 注 對於當前正在執行任務所產生的的子任務,不管是什麼型別的,都得等當前任務佇...

事件佇列的理解

在前端的日常工作中,我們可能不會特別關注事件佇列這樣比較抽象的概念,初次接觸事件佇列是在面試的時候被問到,你知道的 一臉懵逼,然後就各種網上搜尋,以下是我的理解,如果有不正確的地方希望大神們指正 寫這篇部落格最主要的是參照了 逆光飛舞 的部落格 第一 首先我們得了解前端工程 js 與 程序 執行緒的...