中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站維護工作是做啥web網(wǎng)頁制作成品

網(wǎng)站維護工作是做啥,web網(wǎng)頁制作成品,一流的福州網(wǎng)站建設(shè),網(wǎng)站建設(shè)平臺代理目錄 前言一、執(zhí)行器函數(shù)的執(zhí)行順序二、如何在then()中拋出錯誤三、期約的"非重入"特性四、串行化期約五、應(yīng)對回調(diào)地獄結(jié)語 前言 依據(jù)《JavaScript高級程序設(shè)計》對Promise期約相關(guān)進行查缺補漏. 一、執(zhí)行器函數(shù)的執(zhí)行順序 執(zhí)行器函數(shù)雖作為期約的參數(shù), 卻是期約的…

目錄

  • 前言
  • 一、執(zhí)行器函數(shù)的執(zhí)行順序
  • 二、如何在then()中拋出錯誤
  • 三、期約的"非重入"特性
  • 四、串行化期約
  • 五、應(yīng)對回調(diào)地獄
  • 結(jié)語

前言

依據(jù)《JavaScript高級程序設(shè)計》對Promise期約相關(guān)進行查缺補漏.


一、執(zhí)行器函數(shù)的執(zhí)行順序

執(zhí)行器函數(shù)雖作為期約的參數(shù), 卻是期約的初始化程序在同步隊列中執(zhí)行, 即程序從上到下執(zhí)行下來碰到期約, 會先在同步任務(wù)隊列執(zhí)行完執(zhí)行器函數(shù)再進去期約.

ECMAScript暴露的異步結(jié)構(gòu)中, 任何對象都有then方法, 而有實現(xiàn)了該方法的結(jié)構(gòu)即被認(rèn)為實現(xiàn)了thenable接口. Promise的原型上也實現(xiàn)了then()方法:

new Promise((resolve, reject) => {
...
}).then();

then()只接受函數(shù)類型參數(shù)且最多2個.


二、如何在then()中拋出錯誤

then(()=>{throw 'baz';
}); 	
then(()=>{Error('qux');
}) 

兩種都正確,前者拋出報錯;
后者返回一個包裝于Promise對象中的錯誤對象可以反應(yīng)調(diào)用棧情況, 以正常值輸出.


三、期約的"非重入"特性

期約"落定"后, 處理程序(即then的參數(shù)函數(shù)onResolvedonRejected)僅會加入排期而非立即執(zhí)行, 而排在處理程序后的同步語句會先執(zhí)行, 此特性是由Javascript運行時保證的,即then內(nèi)部語句的輸出會晚于then外部更加靠后的語句的輸出.
其原因為在一個落定期約上調(diào)用then雖會把then中的處理程序推進消息隊列, 但在當(dāng)前線程上的同步代碼執(zhí)行完成前處理程序依然不會被執(zhí)行. 更符合常理一些的寫法, 對一個已寫入處理程序的期約落定后, 也會是這樣的輸出順序.


四、串行化期約

期約連鎖: then()內(nèi)再構(gòu)建期約, 串行化異步任務(wù)即:

new Promise((resolve, reject) => { console.log ('P1 executor'); setTimeout (resolve, 1000);
})
.then (() => { new Promise((resolve, reject) => { console.log('P2 executor'); setTimeout(resolve, 1000);
})
.then(() => {new Promise((resolve, reject) => { console.log('P3 executor'); setTimeout(resolve, 1000);
});

但書中似乎認(rèn)為這種串行式結(jié)構(gòu)并未解決回調(diào)地獄(未明確表明).


五、應(yīng)對回調(diào)地獄

可見第四節(jié)這種串行結(jié)構(gòu)有同質(zhì)部分,如果將同質(zhì)部分使用工廠函數(shù)調(diào)用生產(chǎn),這種結(jié)構(gòu)可以演化為:

function delayedResolve(str) {return new Promise((resolve, reject) => { console.log(str);setTimeout (resolve, 1000);});
}  //工廠函數(shù)delayResolve('P1 executor').then(() => { delayResolve('P2 executor');
})
.then(()=> {delayResolve('P3 executor')
})

每次調(diào)用"生產(chǎn)"返回一塊期約對象同質(zhì)部分,返回后相當(dāng)于回到了期約串行結(jié)構(gòu):

new Promise().then(() => {delayResolve();
}).then()

上例期約體同質(zhì)部分只分為一種,打比方如果上例有一段串行塊的期約內(nèi)還輸出了1,這就是另一種同質(zhì)部分,就要再單獨為這段輸出了1的期約構(gòu)建工廠函數(shù).

以上為基礎(chǔ),如果不使用期約,以回調(diào)函數(shù)形式喚起后續(xù)的異步操作就會是這樣:

function delayedExecute(str, callback = null) { setTimeout(() => { callback && callback();}, 1000)
}delayedExecute('P1callback', () => {delayedExecute('P2callback', () => {delayedExecute('P3callback', () => { delayedExecute('P4callback');});});
});

《JavaScript高級程序設(shè)計》中稱這樣的一種結(jié)構(gòu), 破除了回調(diào)地獄.

那么這種結(jié)構(gòu)到實戰(zhàn)中,加上ajax請求就不能再每次傳一個字面量,因為我們要模仿回調(diào)地獄里下個參數(shù)為上個結(jié)果的情況,就要把上次請求的結(jié)果傳到下個回調(diào)函數(shù)內(nèi):

function delayedExecute(params, callback = null) { $.ajax({url: 'xx/xx',type:'post',data: { a: params.a, b: params.b },success (res) { callback && callback(res);}
})
}delayedExecute(data0, (res0) => {delayedExecute(res0, (res1) => {delayedExecute(res1, (res2) => { delayedExecute(res2);});});
});

結(jié)語

如有疏漏,請為我指正,謝謝.

http://www.risenshineclean.com/news/31380.html

相關(guān)文章:

  • 衡水做淘寶網(wǎng)站整合營銷網(wǎng)絡(luò)推廣
  • 臨沂網(wǎng)站seo互聯(lián)網(wǎng)營銷師考試題庫
  • 重慶高端網(wǎng)站建設(shè)江蘇搜索引擎優(yōu)化
  • 商丘網(wǎng)站建設(shè)專業(yè)現(xiàn)狀營銷策劃與運營方案
  • 濰坊網(wǎng)站開發(fā)公司秒收錄關(guān)鍵詞代發(fā)
  • 利用帝國軟件如何做網(wǎng)站qq空間秒贊秒評網(wǎng)站推廣
  • 網(wǎng)站發(fā)產(chǎn)品ps怎么做產(chǎn)品圖友情貼吧
  • 百度網(wǎng)站沒收錄百度賬戶安全中心
  • 有專門教做蛋糕的網(wǎng)站重慶網(wǎng)站推廣軟件
  • 物流網(wǎng)站建設(shè)哪個好智慧軟文發(fā)稿平臺官網(wǎng)
  • 網(wǎng)站一般在哪建設(shè)網(wǎng)絡(luò)推廣人員
  • app界面設(shè)計流程圖河北搜索引擎優(yōu)化
  • 深圳做網(wǎng)站好的公司外貿(mào)推廣優(yōu)化公司
  • qq怎么做網(wǎng)站客服企業(yè)推廣策略
  • 對政府網(wǎng)站一體化服務(wù)建設(shè)的需求百度投放廣告一天多少錢
  • 烏魯木齊可以做網(wǎng)站的公司有哪些重慶網(wǎng)站seo教程
  • 網(wǎng)站開發(fā)語言是什么app開發(fā)多少錢
  • 西安企業(yè)網(wǎng)站建設(shè)哪家好怎么用手機創(chuàng)建網(wǎng)站
  • 什么網(wǎng)站ppt做的好免費的seo優(yōu)化工具
  • 日語網(wǎng)站設(shè)計怎么做百度推廣平臺
  • 資陽視頻網(wǎng)站建設(shè)廣州seo服務(wù)公司
  • 房地產(chǎn)網(wǎng)站解決方案女孩子做運營是不是壓力很大
  • 企業(yè)網(wǎng)站 asp php網(wǎng)絡(luò)優(yōu)化工具app手機版
  • 哪些專門做批發(fā)的網(wǎng)站有哪些短網(wǎng)址鏈接生成
  • 網(wǎng)站制作文案杭州長治seo顧問
  • seo發(fā)布網(wǎng)站某網(wǎng)站搜索引擎優(yōu)化
  • 網(wǎng)站開發(fā)包含上線嗎網(wǎng)絡(luò)營銷的六大功能
  • wordpress網(wǎng)站例昆明網(wǎng)絡(luò)營銷
  • 在國外做盜版電影網(wǎng)站嗎seo發(fā)帖工具
  • 做內(nèi)貿(mào)的網(wǎng)站武漢網(wǎng)站設(shè)計十年樂云seo