Event Loop

隊(duì)列是什么?先進(jìn)先出,只能在隊(duì)列一端插入,另一段刪除。排隊(duì)不能插隊(duì),只能從隊(duì)尾排。打印文檔有個(gè)打印隊(duì)列,誰先來誰先打印出來。后者必須等待前者結(jié)束后才能進(jìn)行。

js特點(diǎn)是是單線程,引入了異步非阻塞式的事件循環(huán)機(jī)制。

Psromise - 微任務(wù)隊(duì)列 UI渲染等其他 - 宏任務(wù)

每一個(gè)宏任務(wù)執(zhí)行完檢查有沒有微任務(wù),沒有了再去執(zhí)行下一個(gè)宏任務(wù)



擊鼓傳花

1、隊(duì)列版本

function game(list, num){

????let queue = new Queue();

????for(let i = 0; i < list.length; i++){

? ???????? queue.enqueue(list[i]);

????}

????while(queue.size()>1){

????????? for (let j = 0; j < num; j++){

? ? ???????????? queue.enqueue(queue.dequeue());

????????????}

????????????queue.dequeue();

? ? ? }

????????return queue.dequeue();

}

2、通俗易懂版本

function josephus(list, step) {

? ????const arr = [...list];

? ????let index = 0;

? ????while (arr.length > 1) {

? ? ????????// 計(jì)算要淘汰的位置

? ? ????????index = (index + step - 1) % arr.length;

? ? ????????// 移除該元素

? ? ????????arr.splice(index, 1);

????? }

????? return arr[0];

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容