国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js前端面試之同步與異步問題詳解

2024-05-06 15:41:07
字體:
供稿:網(wǎng)友

前言

我本來是打算寫一篇co源碼精讀(為啥讀co,因?yàn)樗?,然鵝發(fā)現(xiàn)自己存在一系列基礎(chǔ)問題沒有搞透徹,打算寫一個(gè)js基礎(chǔ)系列文章,總結(jié)自己的理解(copy),希望與你在學(xué)習(xí)路上一同進(jìn)步。首先問問自己當(dāng)面試官問到j(luò)s中的同步和異步,這個(gè)問題該怎么回答?理解一個(gè)問題無非是what-why-how

js同步和異步問題是什么-->為什么會(huì)產(chǎn)生異步問題-->如何解決。

一、JavaScript起源

技術(shù)的出現(xiàn),和應(yīng)用場(chǎng)景密切相關(guān)的。JavaScript誕生于1995年。當(dāng)時(shí),它的主要目的是處理以前由服務(wù)器端語言(如Perl)負(fù)責(zé)的一些輸入驗(yàn)證操作。在JavaScript問世之前,必須把表單數(shù)據(jù)發(fā)送到服務(wù)器端才能確定用戶是否沒有填寫某個(gè)必填域,是否輸入了無效的值。Netscape Navigator希望通過JavaScript來解決這個(gè)問題。起初名字為livescript,但是后來Netscape(網(wǎng)景)與Sun公司成立了一個(gè)開發(fā)聯(lián)盟。Netscape為了搭上媒體熱炒Java的順風(fēng)車,臨時(shí)把LiveScript改名為JavaScript,所以從本質(zhì)上來說JavaScript和Java沒什么關(guān)系(趁熱度)。

如今,JavaScript的用途早已不再局限于簡(jiǎn)單的數(shù)據(jù)驗(yàn)證,而是具備了與瀏覽器窗口及其內(nèi)容等幾乎所有方面交互的能力。今天的JavaScript已經(jīng)成為一門功能全面的編程語言

總結(jié):js最初的用途是為來實(shí)現(xiàn)用戶與瀏覽器的交互

二、JS為何是單線程的?

JavaScript的單線程,與它的用途有關(guān)。作為瀏覽器腳本語言,JavaScript的主要用途是與用戶互動(dòng),以及操作DOM。這決定了它只能是單線程,否則會(huì)帶來很復(fù)雜的同步問題。比如,假定JavaScript同時(shí)有兩個(gè)線程,一個(gè)線程在某個(gè)DOM節(jié)點(diǎn)上添加內(nèi)容,另一個(gè)線程刪除了這個(gè)節(jié)點(diǎn),這時(shí)瀏覽器應(yīng)該以哪個(gè)線程為準(zhǔn)?

所以,為了避免復(fù)雜性,從一誕生,JavaScript就是單線程,這已經(jīng)成這門語言的核心特征,將來也不會(huì)改變。

注:所謂單線程,是指在JS引擎中負(fù)責(zé)解釋和執(zhí)行JavaScript代碼的線程只有一個(gè)。

三、計(jì)算機(jī)的同步與異步(重點(diǎn))

計(jì)算機(jī)領(lǐng)域中的同步(Synchronous)和異步(Asynchronous)和我們生活中的同步和異步的概念是恰好相反的,感覺是翻譯要背這個(gè)鍋。生活中的同步,突出的是‘同',相同的步伐,是咱倆一起行動(dòng),比如一起去逛街吃飯飯睡覺覺。異步則是你忙你的,我忙我的,步調(diào)不致且互不干擾。難到計(jì)算機(jī)里的同步和異步不是這樣?確實(shí)不是。

計(jì)算機(jī)的同步就好比:你去外地上學(xué)人生地不熟,突然生活費(fèi)不夠了;此時(shí)你決定打電話回家,通知家里轉(zhuǎn)生活費(fèi)過來,可是當(dāng)你撥出電話時(shí),對(duì)方一直處于待接聽狀態(tài)(即:打不通,聯(lián)系不上),為了拿到生活費(fèi),你就不停的oncall、等待,最終可能不能及時(shí)要到生活費(fèi),導(dǎo)致你今天要做的事都沒有完成,而白白花掉了時(shí)間。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 老河口市| 汝南县| 健康| 延安市| 大宁县| 盐城市| 从江县| 昌吉市| 新巴尔虎左旗| 简阳市| 平乡县| 扎鲁特旗| 库伦旗| 温泉县| 姜堰市| 正安县| 胶州市| 汽车| 廉江市| 如东县| 兴化市| 临安市| 垣曲县| 海盐县| 东兰县| 桃园县| 观塘区| 崇文区| 吴江市| 大城县| 马鞍山市| 陈巴尔虎旗| 西乌| 河源市| 雅安市| 榆树市| 安图县| 交口县| 楚雄市| 木里| 永德县|