日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript異步編程之Promise的初步使用詳解

瀏覽:86日期:2023-06-06 11:29:28
1. 概述

Promise對象是ES6提出的的異步編程的規(guī)范。說到異步編程,就不得不說說同步和異步這兩個概念。

從字面意思理解同步編程的話,似乎指的是兩個任務(wù)同步運行,如果這樣理解就錯了(至少筆者再沒有接觸到這個概念的時候有這種誤解)。同步和異步指的是代碼指定執(zhí)行的順序(結(jié)構(gòu)化編程范式的執(zhí)行順序總是由上至下,由前往后的),如果執(zhí)行的順序與代碼的相同,就是同步;如果不同,就是異步。

最初,操作系統(tǒng)都是基于命令行的,所有的的語言設(shè)計出來也天然是同步的語句,在這種情況下,也不需要異步編程。但是很快,圖形操作界面就出來了,所有的程序設(shè)計語言都不得不跟GUI打交道了。我們必須了解的是,GUI程序是一個不停繪制的界面程序:

while(done){ dosomething(); drawGUI();}

如果每個循環(huán)中執(zhí)行的任務(wù)dosomething()的事件太長,就會導(dǎo)致界面遲遲得不到繪制命令,直觀的表現(xiàn)就是卡頓。為了解決這個問題,使用JavaScript作為腳本的瀏覽器一般都會采用事件循環(huán)(Event Loop)的機制:

將耗時的行為規(guī)定為事件,事件與響應(yīng)回調(diào)函數(shù)綁定。 每個循環(huán),優(yōu)先處理同步代碼。 同步代碼完成,按照先后順序遍歷事件。 在剩下的沒有同步代碼的循環(huán)中,依次執(zhí)行事件的相應(yīng)函數(shù)。

這樣,在單線程的情況下,就修改了任務(wù)的執(zhí)行順序,實現(xiàn)了異步的機制。因為同步的行為總是很快完成及時進行了界面繪制,界面卡頓的現(xiàn)象也大為改善了。

事件循環(huán)機制將UI設(shè)備的輸入輸出規(guī)定為事件,實際上,耗時的行為非常多,但是一般都與IO相關(guān),與IO相關(guān)的行為,JavaScript都提供了異步行為的代碼。例如,這里要用的一個加載圖片的實例。

2. 詳論

首先準(zhǔn)備一個HTML頁面PromiseTest.html,在這個HTML頁面中加載JS的腳本PromiseTest.js:

<!DOCTYPE html><html><head> <meta charset='utf-8'> <script src='http://m.b3g6.com/bcjs/3rdParty/jquery-3.5.1.js'></script> <title>樣例</title></head><body> <div id = 'container'> </div> <script src='http://m.b3g6.com/bcjs/PromiseTest.js'></script></body></html>

原生的JS的圖像對象Image,是通過事件的形式來實現(xiàn)圖像的異步加載的:

$(function () {var img = new Image(); img.onload = function () { $(img).appendTo($(’#container’)); }; img.src = 'http://m.b3g6.com/bcjs/img.jpg'; });

為Image的事件句柄onload,添加一個相應(yīng)函數(shù),當(dāng)圖像裝載完成之后,就將裝載好的Image添加到HTML頁面的某個div元素子節(jié)點下。通過瀏覽器打開這個頁面,會直接顯示對應(yīng)地址的圖片。

這個JS腳本當(dāng)然也可以通過Promise來改寫:

$(function () {function getImg(uri){return new Promise(function(resolve, reject){ var img = new Image(); img.onload = function () {resolve(img); }; img.onerror = function () {reject(Error('Load Image Error!')); } img.src = uri;}); } var imgUri = './img.jpg'; getImg(imgUri).then(function(img){$(img).appendTo($(’#container’)); }, function(error){console.error('Failed!', error); })});

粗看起來,使用Promise,似乎使得程序顯得更加復(fù)雜和繁復(fù)了。但是我們要深入理解Promise機制的內(nèi)涵,這樣設(shè)計并不是為了好玩。

Promise對象代表的是一個預(yù)定要做、但是還未開始做的行為。既然是一個行為,當(dāng)然得進行計劃,并對行為結(jié)果做出規(guī)定:如果成功了,就執(zhí)行resolve;如果失敗了,就執(zhí)行reject。一般我們可以定義一個function,并且返回一個Promise對象。 調(diào)用返回Promise對象的function,這樣這個想要進行的行為就真正啟動了。不過resolve和reject只是兩個回調(diào)函數(shù),那么就通過then方法來規(guī)定成功和失敗對應(yīng)的真正的處理函數(shù)。

可以看到,這樣的設(shè)計看起來很繁復(fù),但是卻很像是一個同步行為:規(guī)定一個未完成行為對象,行為完成了如何處理,行為失敗了又如何處理。而這也是Promise的目的:使得異步操作更像是一個同步的行為。

3. 參考

同步(Synchronous)和異步(Asynchronous)

簡述JS單線程異步實現(xiàn)原理

JavaScript 運行機制詳解:再談Event Loop

到此這篇關(guān)于JavaScript異步編程之Promise的初步使用的文章就介紹到這了,更多相關(guān)js Promise使用內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本一区二区高清不卡| 97精品中文字幕| 日韩欧美少妇| 亚洲伦乱视频| 久久精品免费一区二区三区| 国产v日韩v欧美v| 国产福利电影在线播放| 国产精品99久久免费观看| 日本不卡视频在线| 九九综合在线| 亚洲免费一区三区| 日韩精品成人| 精品视频久久| 日本韩国欧美超级黄在线观看| 国产盗摄——sm在线视频| 理论片午夜视频在线观看| 成人污污视频| 欧美成人精品三级网站| 精品国产三区在线| 成人精品高清在线视频| 激情综合五月| 1024精品一区二区三区| 免费观看久久av| 日韩二区在线观看| 国产精品视频一区二区三区| 成人日韩精品| 日本午夜精品一区二区三区电影 | 国产模特精品视频久久久久| 久久国产精品色av免费看| 日韩精品专区| 亚洲人成高清| 精品91福利视频| 伊人久久大香线蕉av不卡| 亚洲免费成人| 精品一级视频| 欧美在线网站| 日本精品久久| 福利视频一区| 日韩影院免费视频| 久久久久蜜桃| 国产亚洲一区二区手机在线观看| 中文一区二区| 国产精品高潮呻吟久久久久| 亚洲五月婷婷| 中文字幕一区二区三区日韩精品| 亚洲播播91| 日韩av不卡一区二区| 国产综合激情| 国产精品一区二区99| 亚洲精品免费观看| 午夜久久影院| 欧美日韩在线网站| 国产精品115| 日本精品在线播放| 综合一区av| 香蕉久久国产| 夜夜精品视频| 伊人久久亚洲美女图片| 成人免费电影网址| 色88888久久久久久影院| 最新中文字幕在线播放| 国产精品成久久久久| 久久久噜噜噜| 亚洲v在线看| 97国产精品| 久久久久久久欧美精品| 国产区精品区| 日韩高清在线一区| 日韩精品一页| 91久久精品无嫩草影院| 欧美中文高清| 成人国产精品一区二区免费麻豆| 精品久久免费| 日韩av一级| 国产精品毛片| 国产精品免费不| 欧美精品成人| 国产99精品| 免费成人在线影院| 国产精品亚洲人成在99www| 精品国产午夜| 国产精品7m凸凹视频分类| 午夜久久影院| 你懂的网址国产 欧美| 亚洲成人精品| 蜜臀av一区二区在线免费观看 | 91视频一区| 欧美女激情福利| 日韩精选在线| 日本精品影院| 久久黄色影院| 欧美精品国产| 欧美日韩国产一区二区三区不卡| 午夜视频一区二区在线观看| 久久影院一区二区三区| 亚洲一区不卡| 岛国av在线网站| 日本在线视频一区二区| 久久人人精品| 免费看久久久| 日韩精品视频中文字幕| 久久麻豆精品| 国产欧美啪啪| 午夜一级久久| 日韩精品中文字幕第1页| 欧美1区2区3区| 成人在线超碰| 久久av导航| 日本不卡的三区四区五区| 一区二区小说| 另类专区亚洲| 日韩欧乱色一区二区三区在线| 激情综合激情| 亚洲精品.com| 福利一区和二区| 中文字幕亚洲影视| 久久高清免费观看| 亚洲国产日韩欧美在线| 美女性感视频久久| 日韩不卡免费视频| 免费在线小视频| 国产精品蜜芽在线观看| 国产一区二区久久久久| 高清一区二区三区av| 91亚洲成人| 成人精品天堂一区二区三区| 日韩欧美精品| 久久激情一区| 婷婷激情综合| 亚洲一区二区三区高清不卡| 欧美精品激情| 中文字幕日韩亚洲| 91成人小视频| 国产精品伦一区二区| 精品国产亚洲日本| 久久影院资源站| 正在播放日韩精品| 欧美日韩激情在线一区二区三区| 国产亚洲精品v| 91av一区| 日韩欧美少妇| 日韩在线a电影| 国产日韩亚洲| 亚洲精品一级二级| 性欧美长视频| 老牛国内精品亚洲成av人片| 麻豆视频在线观看免费网站黄| 国产综合精品| 国产日韩一区| 99久久九九| 蜜桃传媒麻豆第一区在线观看| 国产精品中文字幕制服诱惑| 在线中文字幕播放| 日韩高清成人在线| 久久狠狠婷婷| 国产精品久一| 99亚洲精品| 国产一区二区三区视频在线| 黄页网站一区| 老鸭窝一区二区久久精品| 欧美日韩国产一区二区三区不卡| 日韩av中文字幕一区| 日韩另类视频| 日韩av资源网| 亚洲黄页一区| 欧美国产专区| 男女男精品网站| 久久久久国产精品一区三寸 | 超级白嫩亚洲国产第一| 亚洲精品一级二级三级| 久久久精品网| 久久精品资源| 深夜日韩欧美| 国产精品88久久久久久| 国模大尺度视频一区二区| 日韩亚洲精品在线观看| 欧美日韩精品一区二区视频| 精品美女久久| 欧美激情亚洲| 亚洲免费影视| 免费精品国产的网站免费观看| 国产成人精品亚洲线观看| 91精品美女| 欧美日本不卡高清| 91亚洲无吗| 日本不卡一区二区三区| 国产农村妇女精品一二区| 久久精品国产大片免费观看| 亚洲va中文在线播放免费| 亚洲免费播放| 免播放器亚洲| 好吊日精品视频| 亚洲大片在线| 99re国产精品| 亚洲欧美综合| 午夜日韩av| 一区二区三区四区精品视频| 久久高清一区| 一区二区三区国产盗摄| 亚洲2区在线|