亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

前端是不是相當于后端的多線程編程?跪求!

前端是不是相當于后端的多線程編程?跪求!

一只名叫tom的貓 2019-08-13 23:00:34
所以一般情況下是不是前端要考慮的情況更多,更復雜?
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

不是的,后端通常使用多線程來解決耗時操作,一個耗時操作只能阻塞一個線程,其他線程還可以處理其他的請求。這樣后端可以采用同步編程的方式,前面的代碼肯定在后面代碼之前執行,后面代碼可以用前面代碼的結果,邏輯上比較清晰。
但前端一個頁面只有一個ui線程,沒法多線程,耗時操作會阻塞整個瀏覽器頁面。所以對于耗時操作,前端不能用同步的編程方式,只能用異步編程方式,用回調函數,層層嵌套的回調函數造成回調地獄,非常難以閱讀和維護。所以前端逐步發展出對付異步編程的方法,最早的是Promise和Observable,后來的async/await,讓異步代碼看起來像是同步,但只是偽同步,代碼還是比后端的真同步難寫。
雖然前端沒有多線程的同步互斥問題,但總的來說,異步代碼總是比同步代碼難寫。
前端js異步編程也有一個好處,只用很少的線程,并發量大的時候效率更高,引起線程切換也很耗資源。所以后端也引進了異步編程,比如nodejs,還有playframework2也是異步的,利用了promise或者java8中類似promise的機制。
                            
查看完整回答
反對 回復 2019-08-13
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

前端的JS解釋引擎只有一個線程,相當于后端的主線程,其余線程均由瀏覽器進行實現,并暴露相應的API給JS執行引擎,這些API通常要求JS綁定一個函數,以便回傳結果。事實上,JS代碼通常不會全程運行,而是函數綁定的事件發生之后,將函數語句放到調用棧里逐條執行。至于孰難孰易,聽說后端比較難咯。
                            
查看完整回答
反對 回復 2019-08-13
  • 2 回答
  • 0 關注
  • 492 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號