欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

企業網站制作的js異步問題

2022-05-02    分類: 企業網站制作

企業網站制作的js單線程為什么會有'異步'問題
看完前面的鋪墊你是否會產生這些疑問,JS是單線程的,那么他是如何是實現異步操作的?AJAX異步發送和回調請求,還有setTimeout也看起來像是多線程的?不急慢慢來

js是同步的?
是的,單線程,那肯定只能同步(排隊)執行咯
js為什么需要異步?
如果JS中不存在異步,只能自上而下執行,萬一上一行解析時間很長,那么下面的代碼就會被阻塞。
對于用戶而言,阻塞就意味著"卡死",這樣就導致了很差的用戶體驗
js單線程又是如何實現異步的呢?
通過 事件循環(event loop) 實現'異步'
經典問題:
console.log('1')
setTimeout(function(){
console.log('2')
},0)
console.log('3')
// 1,3,2
也就是說,setTimeout里的函數并沒有立即執行,而是延遲了一段時間,滿足一定條件后,才去執行的,這類代碼,我們叫異步代碼。
所以,這里我們首先知道了JS里的一種分類方式,就是將任務分為: 同步任務和異步任務
也就是說,setTimeout里的函數并沒有立即執行,而是延遲了一段時間,滿足一定條件后,才去執行的,這類代碼,我們叫異步代碼。
所以,這里我們首先知道了JS里的一種分類方式,就是將任務分為: 同步任務和異步任務
雖然JS是單線程的但是瀏覽器的內核是多線程的,在瀏覽器的內核中不同的異步操作由不同的瀏覽器內核模塊調度執行,異步操作會將相關回調添加到任務隊列中。而不同的異步操作添加到任務隊列的時機也不同,如 onclick, setTimeout, ajax 處理的方式都不同,這些異步操作是由瀏覽器內核的 webcore 來執行的,webcore 包含上圖中的3種 webAPI,分別是 DOM Binding、network、timer模塊。
按照這種分類方式:JS的執行機制是
首先判斷js代碼是同步還是異步,同步就進入主進程,異步就進入event table
異步任務在event table中注冊函數,當滿足觸發條件后,被推入event queue
同步任務進入主線程后一直執行,直到主線程空閑時,才會去event queue中查看是否有可執行的異步任務,如果有就推入主進程中
總結:同步可以保證順序一致,但是容易導致阻塞;異步可以解決阻塞問題,但是會改變順序性,根據不同的需要去寫你的代碼,
公司網站建設中JS異步編程的四種方法
回調函數,這是異步編程最基本的方法
假定有兩個函數f1和f2,后者等待前者的執行結果,如果f1是一個很耗時的任務,可以考慮改寫f1,把f2寫成f1的回調函數。
function f1(callback){
setTimeout(function () {
// f1的任務代碼
callback();
}, 1000);
}
采用這種方式,我們把同步操作變成了異步操作,f1不會堵塞程序運行,相當于先執行程序的主要邏輯,將耗時的操作推遲執行。
回調函數的優點是簡單、容易理解和部署,缺點是不利于代碼的閱讀和維護,各個部分之間高度耦合(Coupling),流程會很混亂,而且每個任務只能指定一個回調函數。
二、事件監聽
另一種思路是采用事件驅動模式。任務的執行不取決于代碼的順序,而取決于某個事件是否發生。
f1.on('done', f2); 當f1發生done事件,就執行f2。
function f1(){
setTimeout(function () {
// f1的任務代碼
f1.trigger('done');
}, 1000);
}
f1.trigger('done')表示,執行完成后,立即觸發done事件,從而開始執行f2。
這種方法的優點是比較容易理解,可以綁定多個事件,每個事件可以指定多個回調函數,而且可以"去耦合"(Decoupling),有利于實現模塊化。缺點是整個程序都要變成事件驅動型,運行流程會變得很不清晰。
三、發布/訂閱
我們假定,存在一個"信號中心",某個任務執行完成,就向信號中心"發布"(publish)一個信號,其他任務可以向信號中心"訂閱"(subscribe)這個信號,從而知道什么時候自己可以開始執行。這就叫做"發布/訂閱模式"(publish-subscribe pattern),又稱"觀察者模式"(observer pattern)。我們可以通過查看"消息中心",了解存在多少信號、每個信號有多少訂閱者,從而監控程序的運行。 
jQuery.subscribe("done", f2); //首先,f2向"信號中心"jQuery訂閱"done"信號。
function f1(){
setTimeout(function () {
// f1的任務代碼
jQuery.publish("done"); //f1執行完成后,向"信號中心"jQuery發布"done"信號,引發f2的執行。
}, 1000);
}
jQuery.unsubscribe("done", f2); //f2完成執行后,也可以取消訂閱(unsubscribe)。
四、Promises對象
Promises對象是CommonJS工作組提出的一種規范,目的是為異步編程提供統一接口。簡單說,它的思想是,每一個異步任務返回一個Promise對象,該對象有一個then方法,允許指定回調函數。
f1().then(f2);
function f1(){
var dfd = $.Deferred();
setTimeout(function () {
// f1的任務代碼
dfd.resolve();
}, 500);
return dfd.promise;
}
回調函數變成了鏈式寫法,程序的流程可以看得很清楚,而且有一整套的配套方法,可以實現許多強大的功能。
f1().then(f2).then(f3); //指定多個回調函數
f1().then(f2).fail(f3); //指定發生錯誤時的回調函數
如果一個任務已經完成,再添加回調函數,該回調函數會立即執行。所以,你不用擔心是否錯過了某個事件或信號。這種方法的缺點就是編寫和理解,都相對比較難。
js的回調函數的例子;
1,

2,
/**callback回調函數的使用*/
function fun1(callback){
alert('執行會點函數前操作');//執行這里第二步
if(typeof(callback)=='function'){
callback();
}
}
$(function(){
alert(1);//先執行這里第一步
fun1(function(){
alert('執行回調函數主題內容吧');//最后執行這里
})
})
/**callback回調函數的使用*/

網站題目:企業網站制作的js異步問題
分享鏈接:http://m.kartarina.com/news/149040.html

網站建設、網絡推廣公司-創新互聯,是專注品牌與效果的網站制作,網絡營銷seo公司;服務項目有網站制作企業網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
日韩午夜精品电影| 精品一区二区av| 国产精品美日韩| 中文久久乱码一区二区| 欧美激情资源网| 国产欧美日韩激情| 亚洲情趣在线观看| 一区二区三区中文字幕| 一片黄亚洲嫩模| 丝袜亚洲另类丝袜在线| 日本欧美大码aⅴ在线播放| 日韩1区2区3区| 久久er99精品| 成人av在线一区二区三区| 99久久精品免费看| 欧美日韩在线直播| 欧美一区二区免费| 中文字幕欧美激情一区| 亚洲精选在线视频| 日本不卡一区二区三区高清视频| 蜜桃一区二区三区在线观看| 国产在线播放一区三区四| 成人久久久精品乱码一区二区三区| 岛国一区二区在线观看| 欧美性感一类影片在线播放| 亚洲欧美日韩国产另类专区| 99久久精品免费看国产免费软件| 色综合中文字幕国产 | zzijzzij亚洲日本少妇熟睡| 一本久道久久综合中文字幕| 国产性色一区二区| 中文字幕av一区 二区| 亚洲一二三专区| 国产在线精品一区二区| 色哟哟在线观看一区二区三区| 51精品久久久久久久蜜臀| 国产亚洲欧美激情| 亚洲妇女屁股眼交7| 国产精品99久久久久久宅男| 欧美中文一区二区三区| 久久伊人中文字幕| 一区二区三区国产豹纹内裤在线| 国产一区二区剧情av在线| 在线观看三级视频欧美| 久久久不卡影院| 一区二区三区高清| 国产98色在线|日韩| 56国语精品自产拍在线观看| 最新国产精品久久精品| 国产在线乱码一区二区三区| 欧美人与性动xxxx| 国产精品美女久久久久久久久久久 | 美女爽到高潮91| 欧美在线免费视屏| 国产精品动漫网站| 国产在线视频一区二区三区| 欧美日韩免费高清一区色橹橹| 国产拍揄自揄精品视频麻豆| 日本最新不卡在线| 欧美日韩黄视频| 亚洲精品ww久久久久久p站| 国产91色综合久久免费分享| 欧美成人aa大片| 免费av网站大全久久| 欧美乱妇23p| 洋洋av久久久久久久一区| 91一区二区在线| 精品少妇一区二区三区免费观看| 欧美一区二区三区四区在线观看| 欧美三级午夜理伦三级中视频| 久久久久高清精品| 国产精品一区二区黑丝| 欧美xxxxxxxxx| 蜜臀精品久久久久久蜜臀| 欧美日韩精品免费观看视频| 一区二区三区不卡在线观看| 91国产成人在线| 亚洲自拍偷拍麻豆| 欧美日韩成人激情| 日本不卡中文字幕| 精品美女一区二区三区| 国产永久精品大片wwwapp| 久久综合久久综合九色| 国产精品66部| 中文字幕一区在线观看| 欧洲精品一区二区三区在线观看| 亚洲一级二级三级在线免费观看| 欧美日韩高清影院| 精品亚洲成a人| 日本一区二区电影| 日本高清视频一区二区| 日本免费在线视频不卡一不卡二| 精品嫩草影院久久| av网站免费线看精品| 亚洲综合在线五月| 欧美精品tushy高清| 精品一区二区久久久| 亚洲欧美中日韩| 欧美色图免费看| 国产精品一区二区久久精品爱涩| 综合久久国产九一剧情麻豆| 欧美日韩成人在线| 国产v日产∨综合v精品视频| 裸体健美xxxx欧美裸体表演| 玉米视频成人免费看| 大尺度一区二区| 亚洲综合免费观看高清完整版| 欧美电影一区二区三区| 国产精品综合在线视频| 亚洲一区二区在线免费观看视频 | 亚洲成人免费视频| 日韩一区二区三区精品视频| 国产精品中文欧美| 午夜欧美在线一二页| 中文av一区二区| 欧美日本一区二区| 成人a级免费电影| 69久久99精品久久久久婷婷| 亚洲h在线观看| 久久看人人爽人人| 69成人精品免费视频| 99re亚洲国产精品| 久久草av在线| 亚洲国产wwwccc36天堂| 国产精品高潮久久久久无| 欧美一区二区三区人| 色88888久久久久久影院按摩| 久久国产精品免费| 亚洲777理论| 亚洲最大成人网4388xx| 中文字幕一区二区在线观看| xnxx国产精品| 日韩免费看的电影| 欧美日韩二区三区| 欧美日韩中文国产| 91福利国产精品| av电影在线观看不卡 | 色婷婷久久99综合精品jk白丝| 亚洲r级在线视频| 亚洲精品国产视频| 亚洲色图欧洲色图婷婷| 国产精品素人一区二区| 久久久精品免费免费| 精品欧美乱码久久久久久| 日韩色视频在线观看| 91精品国产一区二区| 555夜色666亚洲国产免| 在线观看91精品国产麻豆| 欧美精品视频www在线观看| 欧美日韩二区三区| 欧美日韩午夜精品| 欧美日韩国产片| 欧美一激情一区二区三区| 日韩一级片在线播放| 精品国产sm最大网站| 国产网红主播福利一区二区| 国产午夜久久久久| 国产精品久久久久久久裸模| 综合欧美亚洲日本| 亚洲免费大片在线观看| 亚洲免费在线观看| 亚洲福中文字幕伊人影院| 成人性生交大合| 7777精品伊人久久久大香线蕉经典版下载 | 欧美精品在线一区二区| 日韩欧美一级片| 久久这里只精品最新地址| 久久天天做天天爱综合色| 久久婷婷色综合| 中文字幕在线播放不卡一区| 一区二区三区av电影| 天堂在线亚洲视频| 国产在线精品视频| 99视频超级精品| 欧美色欧美亚洲另类二区| 欧美v国产在线一区二区三区| 国产丝袜在线精品| 亚洲一卡二卡三卡四卡五卡| 日本伊人午夜精品| 国产成人8x视频一区二区| 色噜噜狠狠色综合中国| 日韩女优毛片在线| 亚洲日本欧美天堂| 久久国内精品视频| eeuss影院一区二区三区| 欧美精品一二三四| 国产欧美一区二区三区网站| 亚洲综合一区二区| 国产精品中文字幕欧美| 欧美日韩精品欧美日韩精品一| 欧美videos大乳护士334| 亚洲免费视频中文字幕| 久久国内精品自在自线400部| 91在线免费播放| 亚洲精品在线网站| 亚洲3atv精品一区二区三区| 成人av在线资源网站| 26uuu久久综合| 日韩精品1区2区3区| 92国产精品观看|