成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

記錄Promise的實(shí)踐

mengbo / 1526人閱讀

摘要:實(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

相關(guān)文章

  • 從0開(kāi)始擼一個(gè)Promise(一)

    摘要:說(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...

    MSchumi 評(píng)論0 收藏0
  • JavaScript 異步

    摘要:從最開(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ò)...

    tuniutech 評(píng)論0 收藏0
  • 音頻組件開(kāi)發(fā)實(shí)踐

    摘要:相關(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)擊播放按鈕,異...

    qpwoeiru96 評(píng)論0 收藏0
  • [譯]Express在生產(chǎn)環(huán)境下最佳實(shí)踐 - 性能和可靠性

    摘要:前言這將是一個(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)...

    Luosunce 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<