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

企業(yè)網(wǎng)站制作的js異步問題

2022-05-02    分類: 企業(yè)網(wǎng)站制作

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

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

網(wǎng)頁題目:企業(yè)網(wǎng)站制作的js異步問題
網(wǎng)頁鏈接:http://m.kartarina.com/news40/149040.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營銷seo公司;服務(wù)項目有網(wǎng)站制作、企業(yè)網(wǎng)站制作

廣告

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

外貿(mào)網(wǎng)站建設(shè)
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
美女视频免费一区| 亚洲一区在线免费观看| 欧美日韩精品一区二区天天拍小说 | 日韩理论电影院| 国产欧美精品在线观看| 久久亚区不卡日本| 国产欧美日韩视频在线观看| 国产日韩精品一区二区浪潮av| 日韩精品一区二区在线观看| 2020国产精品自拍| 中文在线一区二区| 中文字幕亚洲区| 亚洲国产精品一区二区久久| 午夜不卡av免费| 国产剧情在线观看一区二区| 国产成人免费av在线| 91亚洲国产成人精品一区二区三 | 成人免费小视频| 亚洲精品高清视频在线观看| 欧美亚洲国产一区二区三区va| 色婷婷亚洲综合| 久久人人97超碰com| 国产日本欧洲亚洲| 色视频成人在线观看免| 91极品视觉盛宴| 欧美一区在线视频| 中文字幕不卡三区| 亚洲第一综合色| 狠狠色丁香婷婷综合| 91麻豆国产福利精品| 日韩一级黄色片| 中文字幕在线不卡一区二区三区| 一区二区三区产品免费精品久久75| 首页国产欧美久久| 成人18视频在线播放| 欧美日韩高清影院| 中文字幕中文字幕在线一区| 日本欧美一区二区三区| 99视频在线观看一区三区| 欧美一区二区三区免费在线看| 国产精品三级av| 美国三级日本三级久久99| 不卡的电影网站| 欧美精品一区二区蜜臀亚洲| 亚洲一区二区三区国产| 国产99久久精品| 日韩女优制服丝袜电影| 一区二区三区国产| 成a人片国产精品| 欧美一卡二卡在线| 亚洲国产精品尤物yw在线观看| 国产大陆亚洲精品国产| 日韩视频永久免费| 亚洲精品美国一| 99久久综合国产精品| 国产丝袜美腿一区二区三区| 秋霞午夜鲁丝一区二区老狼| 日本韩国精品在线| 亚洲人成网站影音先锋播放| 国产成人欧美日韩在线电影| 欧美mv日韩mv| 麻豆91精品91久久久的内涵| 欧美日韩亚洲综合| 亚洲图片自拍偷拍| 欧美男女性生活在线直播观看| 中文字幕一区二区三区在线播放| 国产九色sp调教91| 精品免费视频一区二区| 久久综合综合久久综合| 这里只有精品视频在线观看| 亚洲一级二级在线| 欧洲av在线精品| 一区二区久久久| 色国产综合视频| 亚洲一区在线观看视频| 91福利国产精品| 亚洲高清一区二区三区| 欧美日韩日日摸| 蜜桃在线一区二区三区| 日韩欧美一级在线播放| 韩国女主播成人在线| 国产三级欧美三级日产三级99| 国内精品伊人久久久久av一坑| 欧美精品一区二区三区一线天视频 | 国产偷国产偷亚洲高清人白洁| 国产一区三区三区| 日本一二三四高清不卡| 99re这里只有精品6| 夜夜嗨av一区二区三区网页| 欧美挠脚心视频网站| 极品少妇xxxx精品少妇偷拍| 精品久久久久久久久久久久久久久 | 美女一区二区久久| 欧美精品一区二区三区四区| 成人国产精品免费观看视频| 一本一道久久a久久精品综合蜜臀| 亚洲午夜成aⅴ人片| 在线综合+亚洲+欧美中文字幕| 久久激情五月激情| 国产精品久久久久一区二区三区共| 91亚洲国产成人精品一区二区三| 五月综合激情日本mⅴ| 久久久蜜臀国产一区二区| 99久久国产免费看| 日韩中文字幕av电影| 国产亚洲va综合人人澡精品| 色综合 综合色| 久久不见久久见免费视频7| 欧美韩国日本不卡| 在线播放国产精品二区一二区四区| 麻豆精品视频在线观看视频| 中文字幕一区二区三区av| 麻豆精品精品国产自在97香蕉| 国产精品毛片高清在线完整版| 欧美精选午夜久久久乱码6080| 激情文学综合插| 亚洲成a人片在线不卡一二三区| 久久久亚洲午夜电影| 欧美色老头old∨ideo| 国产xxx精品视频大全| 日韩在线一区二区三区| 国产精品色婷婷| 精品国产精品网麻豆系列| 亚洲综合色视频| 欧美激情在线一区二区| 日韩视频在线观看一区二区| 色哟哟亚洲精品| 成人黄色在线视频| 国产精品资源网站| 美女被吸乳得到大胸91| 亚洲成人1区2区| 亚洲美女免费在线| 国产精品看片你懂得| 久久久久久麻豆| 精品精品欲导航| 日韩成人av影视| 国内成人免费视频| 日本午夜精品视频在线观看| 亚洲一线二线三线视频| 亚洲精品高清在线| 亚洲久草在线视频| 一区二区三区资源| 国产精品高潮久久久久无| 国产欧美日韩三级| 国产亚洲欧美色| 久久免费电影网| 久久综合给合久久狠狠狠97色69| 免费xxxx性欧美18vr| 五月婷婷综合网| 日日夜夜一区二区| 青青草国产成人av片免费| 日韩精品免费专区| 奇米色一区二区| 久久er99热精品一区二区| 美女视频免费一区| 激情另类小说区图片区视频区| 看电视剧不卡顿的网站| 国产成人8x视频一区二区| 国产高清在线精品| 97se亚洲国产综合自在线| 一区二区三区自拍| 午夜精品爽啪视频| 久久国产视频网| 国产黄色精品网站| 99re热视频这里只精品| 日本精品一区二区三区四区的功能| 色哟哟精品一区| 欧美日韩精品免费观看视频| 欧美一区二区三区免费视频 | 成人免费在线观看入口| 欧美在线色视频| 欧美一区二区在线播放| 日韩精品影音先锋| 欧美激情在线观看视频免费| 一区二区视频在线| 日本一区中文字幕 | 午夜精品久久久久久久99水蜜桃 | 久久女同精品一区二区| 日本韩国欧美一区| 综合色天天鬼久久鬼色| 亚洲伊人色欲综合网| 国产自产v一区二区三区c| 99久久久国产精品免费蜜臀| 欧美三级中文字幕在线观看| 欧美精品一区二区三区在线| 一区精品在线播放| 激情综合色播五月| 色婷婷亚洲一区二区三区| 欧美一区二区三区视频| 国产精品不卡视频| 日韩高清一区在线| 91在线观看一区二区| 精品三级在线看| 亚洲精品成人a在线观看| 国产一区欧美一区| 欧美一区二区三区在线观看视频| 亚洲国产成人午夜在线一区| 琪琪一区二区三区| 在线影视一区二区三区| 欧美国产激情一区二区三区蜜月|