最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用ES6的Promise.all實(shí)現(xiàn)至少請(qǐng)求多長(zhǎng)時(shí)間的實(shí)例

 更新時(shí)間:2017年08月28日 07:44:08   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇利用ES6的Promise.all實(shí)現(xiàn)至少請(qǐng)求多長(zhǎng)時(shí)間的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1、背景

我們都知道ajax請(qǐng)求可以加個(gè)timeout,就是最多請(qǐng)求多少時(shí)間,如果超過(guò)這個(gè)時(shí)間直接就報(bào)錯(cuò)。 這個(gè)是最多請(qǐng)求多長(zhǎng)時(shí)間,我現(xiàn)在要做的是,最少要請(qǐng)求多長(zhǎng)時(shí)間,然后才能執(zhí)行后續(xù)的邏輯。

比如,一個(gè)ajax請(qǐng)求 x 毫秒就執(zhí)行完畢了,但我要讓他至少執(zhí)行1秒鐘,那我們會(huì)這么想: ajax完成后 , 1. 如果x<1s, 那我們先setTimeout => 1s - x ,然后執(zhí)行后續(xù)操作。 2 如果x>=1s, 那我們直接執(zhí)行后續(xù)操作。 想想這可繁瑣了,我們還要在前面記錄一下開(kāi)始時(shí)間,后面記錄一下結(jié)束時(shí)間,然后才能得到x。。。。

或者變量flag,ajax里面完成設(shè)置flag,setTimeout里面完成也設(shè)置flag等等等方法,都很繁瑣、

2、Solution

現(xiàn)在ES6有個(gè)Promise.all,非常適合解決此類問(wèn)題。直接這樣 Promise.all([ajaxPromise(), waitPromise(1s)]).then(()=> 至少執(zhí)行了1s) 。。。

如果說(shuō)是 多個(gè)ajax(promise)按順序執(zhí)行,但總共加起來(lái)的時(shí)間至少是1s呢? 那就用一個(gè)Promise把多個(gè)ajax包起來(lái)。然后 Promise.all([ajaxPromiseAll(), waitPromise(1s)]).then(()=> 至少執(zhí)行了1s) 。。。

3、 講得很抽象,實(shí)例為證

這個(gè)實(shí)例是這樣的,微信里面有拆紅包,當(dāng)我們點(diǎn)擊 開(kāi) 的時(shí)候,那個(gè)字至少會(huì)完整的 翻一翻。那個(gè)完整翻一翻的時(shí)間我們假定需要1秒鐘。 如果我們直接點(diǎn)擊開(kāi)的時(shí)候,立即請(qǐng)求ajax,等ajax完成立即拆開(kāi)紅包,這里的時(shí)間 有可能不足1s,那 就不能做到完整翻一翻。 如果請(qǐng)求大于1s,那就讓它一直翻轉(zhuǎn)吧,直到完成請(qǐng)求。所以我們?yōu)榱私鉀Q這個(gè)問(wèn)題,就需要用到上面的技術(shù)。

參考代碼如下(Chrome最新版下測(cè)試):

/ ajax模擬A
const funcA = async () =>
 new Promise(resovel => {
  setTimeout(() => {
   console.log("done A");
   resovel("func A");
  }, 400);
 });

因?yàn)閍sync和await使用起來(lái)比Promise爽,所以我采用了這兩個(gè)語(yǔ)法糖來(lái)寫(xiě),用setTimeout來(lái)模擬ajax請(qǐng)求, ajax模擬A和 ajax模擬B有順序關(guān)系的,比如先檢測(cè)這個(gè)人是否還有機(jī)會(huì)打開(kāi)紅包,然后再請(qǐng)求打開(kāi)紅包獲得隨機(jī)紅包金額 。

以上這篇利用ES6的Promise.all實(shí)現(xiàn)至少請(qǐng)求多長(zhǎng)時(shí)間的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3中使用typescript封裝axios的實(shí)例詳解

    Vue3中使用typescript封裝axios的實(shí)例詳解

    這篇文章主要介紹了使用typescript封裝axios的實(shí)例代碼,為了方便,在vue3的配置里面按需加載element-plus,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • JAVA四種基本排序方法實(shí)例總結(jié)

    JAVA四種基本排序方法實(shí)例總結(jié)

    這篇文章主要介紹了JAVA四種基本排序方法,較為詳細(xì)的總結(jié)分析了插入法、冒泡法、選擇法及Shell排序等四種常用的排序技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-07-07
  • js修改input的type屬性及瀏覽器兼容問(wèn)題探討與解決

    js修改input的type屬性及瀏覽器兼容問(wèn)題探討與解決

    js修改input的type屬性有些限制,今天遇到個(gè)問(wèn)題一開(kāi)始的時(shí)候,input的類型是text,后來(lái)變成了password類型。直觀的思路是用js修改input的type類型。但ie下這么做不可行,所以只能換個(gè)思路感興趣的朋友可以了解下
    2013-01-01
  • yepnope.js 異步加載資源文件

    yepnope.js 異步加載資源文件

    yepnope.js是一個(gè)能夠根據(jù)輸入條件來(lái)選擇性異步加載資源文件的js腳本,可以在頁(yè)面上僅加載用戶需要的js/css。
    2011-09-09
  • 基于OO的動(dòng)畫(huà)附加插件,可以實(shí)現(xiàn)彈跳、漸隱等動(dòng)畫(huà)效果 分享

    基于OO的動(dòng)畫(huà)附加插件,可以實(shí)現(xiàn)彈跳、漸隱等動(dòng)畫(huà)效果 分享

    基于OO的動(dòng)畫(huà)附加插件,可以實(shí)現(xiàn)彈跳、漸隱等動(dòng)畫(huà)效果 分享,需要的朋友可以參考一下
    2013-06-06
  • uniapp開(kāi)發(fā)小程序的開(kāi)發(fā)規(guī)范總結(jié)

    uniapp開(kāi)發(fā)小程序的開(kāi)發(fā)規(guī)范總結(jié)

    uni-app 是一個(gè)使用 vue.js 開(kāi)發(fā)跨平臺(tái)應(yīng)用的前端框架,下面這篇文章主要給大家介紹了關(guān)于uniapp開(kāi)發(fā)小程序的開(kāi)發(fā)規(guī)范,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 在Javascript里訪問(wèn)SharePoint列表數(shù)據(jù)的實(shí)現(xiàn)方法

    在Javascript里訪問(wèn)SharePoint列表數(shù)據(jù)的實(shí)現(xiàn)方法

    在進(jìn)行SharePoint訂制的時(shí)候經(jīng)常會(huì)遇到開(kāi)發(fā)手段受限制的問(wèn)題,比如通常公司都會(huì)限制服務(wù)器的訪問(wèn)以及部署,很多開(kāi)發(fā)都只能夠在客戶端來(lái)進(jìn)行
    2011-05-05
  • JS數(shù)組Object.keys()方法的使用示例

    JS數(shù)組Object.keys()方法的使用示例

    這篇文章主要介紹了JS數(shù)組Object.keys()方法的使用,結(jié)合實(shí)例形式分析了javascript使用Object.keys()方法進(jìn)行數(shù)組遍歷、讀取相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • JS監(jiān)聽(tīng)一個(gè)變量改變的兩種方法

    JS監(jiān)聽(tīng)一個(gè)變量改變的兩種方法

    在業(yè)務(wù)中,由于項(xiàng)目采用微前端架構(gòu),需要通過(guò)A應(yīng)用的某個(gè)值的變化對(duì)B應(yīng)用中的DOM進(jìn)行改變(如彈出一個(gè)Modal),第一個(gè)想到的可能是發(fā)布訂閱模式,其實(shí)不如將問(wèn)題縮小化,采用原生的能力去解決,本文介紹了兩種方法來(lái)使用JS監(jiān)聽(tīng)一個(gè)變量改變,需要的朋友可以參考下
    2023-11-11
  • ES5 ES6中Array對(duì)象去除重復(fù)項(xiàng)的方法總結(jié)

    ES5 ES6中Array對(duì)象去除重復(fù)項(xiàng)的方法總結(jié)

    這篇文章主要給大家介紹了Array對(duì)象去除重復(fù)項(xiàng)的相關(guān)資料,文中通過(guò)示例代碼詳細(xì)介紹了在ES5和ES6中Array對(duì)象去除重復(fù)項(xiàng)的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04

最新評(píng)論

杨浦区| 万盛区| 佛冈县| 永福县| 新津县| 遂川县| 大关县| 金寨县| 虎林市| 集安市| 三明市| 鲁山县| 衡东县| 军事| 沙雅县| 巴彦县| 乌拉特中旗| 孟村| 车致| 定日县| 雅江县| 浦县| 濮阳市| 镇沅| 元江| 易门县| 定兴县| 上杭县| 兴文县| 沅江市| 长武县| 成都市| 克东县| 昭通市| 赤城县| 三穗县| 虞城县| 攀枝花市| 玛多县| 泽库县| 德令哈市|