摘要:實(shí)踐實(shí)踐需求就是常見(jiàn)的緩存,如果有緩存使用緩存,沒(méi)有拉鏈?zhǔn)?,邏輯清晰如果中間不想返回了怎么辦既支持回調(diào),又支持就是還是有但是整體作為個(gè)返回這里用包裝,和一個(gè)效果函數(shù)就是返回中斷鏈條
Promise實(shí)踐
Promise實(shí)踐需求就是常見(jiàn)的緩存,如果有緩存使用緩存,沒(méi)有api拉.
1.鏈?zhǔn)?,邏輯清?/p>
P.then().then().catch()
2.then chain如果中間不想返回了怎么辦
Promise.reject in then
3.Promisify,既支持回調(diào),又支持Promise
就是function還是有callback但是整體作為1個(gè)Promise返回.
這里用async包裝,和new Promise一個(gè)效果.
async函數(shù)就是返回Promise.
fetchImgUrl: async function (url, fn, cached = true) { if (cached) { //Best practice for Promise then chain with async/await .... return await cache.store.getItem(url).then(value => { if (!value) { console.log("1st time"); return api.get(url + "?json=true", {}) } else { fn(value); // 中斷then鏈條, // throw error to stop then chain // throw new Error("Already cached") //or reject , better return Promise.reject("Already cached"); } }).then((response) => { console.log(response) fn(response.data.url); return response.data.url; }).then(response => { cache.store.setItem(url, response) console.log(`cache: ${response} ok`); }).catch(e => { console.log(e); }) } else { return axios.get(url + "?json=true", {}).then((response) => { fn(response.data.url); } ).catch(e=>{ console.log(e); }); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106776.html
摘要:說(shuō)白了,就是給聲明的添加一個(gè)包含空的對(duì)象,再由函數(shù)返回這個(gè)空。如此構(gòu)成一個(gè)層層包裹的鏈。四首先本質(zhì)是一個(gè)遞歸函數(shù),結(jié)束條件是,即終止到未掛載對(duì)象的子為止。可以看到這個(gè)函數(shù)的作用就是根據(jù)屬性逐個(gè)觸發(fā)鏈中的或函數(shù)。 背景 Promise是一種非常實(shí)用的異步編程方案,本文對(duì)于Promise源碼的分析可以增進(jìn)讀者對(duì)于Promise原理的理解,以后不再害怕異步編程,不用擔(dān)心callback he...
摘要:從最開(kāi)始的到封裝后的都在試圖解決異步編程過(guò)程中的問(wèn)題。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。寫(xiě)一個(gè)符合規(guī)范并可配合使用的寫(xiě)一個(gè)符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來(lái)處理異步編程。 JavaScript怎么使用循環(huán)代替(異步)遞歸 問(wèn)題描述 在開(kāi)發(fā)過(guò)程中,遇到一個(gè)需求:在系統(tǒng)初始化時(shí)通過(guò)http獲取一個(gè)第三方服務(wù)器端的列表,第三方服務(wù)器提供了一個(gè)接口,可通過(guò)...
摘要:相關(guān)操作音頻的打斷音頻的打斷包括兩種情況組件重新上傳新的語(yǔ)音第一種情況,解綁相關(guān)事件,釋放內(nèi)存。當(dāng)瀏覽器預(yù)計(jì)能夠在不停下來(lái)進(jìn)行緩沖的情況下持續(xù)播放指定的音頻視頻時(shí),會(huì)發(fā)生事件。 我的blog原文鏈接 最近公司迭代的項(xiàng)目中,新增了音頻播放功能,填了不少音頻的坑,總結(jié)一下: 需求: 交互需求: 上傳:點(diǎn)擊按鈕上傳語(yǔ)音,返回文件id(上傳文件的范疇,本文不會(huì)闡述) 播放:點(diǎn)擊播放按鈕,異...
摘要:前言這將是一個(gè)分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑應(yīng)用的最佳實(shí)踐。第一部分會(huì)關(guān)注安全性,第二部分則會(huì)關(guān)注性能和可靠性。關(guān)于第一部分,請(qǐng)參閱在生產(chǎn)環(huán)境下的最佳實(shí)踐安全性。 前言 這將是一個(gè)分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑Express應(yīng)用的最佳實(shí)踐。第一部分會(huì)關(guān)注安全性,第二部分則會(huì)關(guān)注性能和可靠性。當(dāng)你讀這篇文章時(shí),會(huì)假設(shè)你已經(jīng)對(duì)Node.js和web開(kāi)發(fā)有所了解,并且對(duì)生產(chǎn)環(huán)...
閱讀 1059·2021-11-23 10:11
閱讀 3906·2021-11-16 11:50
閱讀 962·2021-10-14 09:43
閱讀 2746·2021-10-14 09:42
閱讀 2747·2021-09-22 16:02
閱讀 1091·2019-08-29 10:57
閱讀 3406·2019-08-29 10:57
閱讀 2308·2019-08-26 13:52