全局的異步任務(wù)隊列

舉個栗子
當你找到一個免費接口夕凝,1分鐘限制調(diào)用次數(shù)10次的時候
當你有一個耗費大量前端資源多個任務(wù)同時執(zhí)行會導(dǎo)致內(nèi)存溢出的時候

大概意思就是我想讓這個任務(wù)排隊執(zhí)行茎杂,或者延遲執(zhí)行,又不想把邏輯寫到組件里
我想要的是摔竿,隨時可以把任務(wù)插進隊列真慢,隊列中的任務(wù)會等待前一個任務(wù)完成再執(zhí)行,任務(wù)完成后callback,還需要一個reject中斷任務(wù)

寫一個任務(wù)隊列

// 任務(wù)隊列
function Queue() {
    this.queue = []
}
// 往隊列里增加一項任務(wù)
Queue.prototype.append = async function (getWork, callback) {
    // 判斷這是否是隊列中的第一項
    if (this.queue.length === 0) {
        this.queue.push({ getWork, callback })
        await this.go()
    } else {
        this.queue.push({ getWork, callback })
    }
}
Queue.prototype.go = async function () {
    if (this.queue.length !== 0) {
        const { getWork, callback } = this.queue[0]
        callback(await getWork())
        this.queue.splice(0, 1)
        await this.go()
    }
}
Queue.prototype.reject = async function () {
    this.queue = []
}


// 測試
let workQueue = new Queue()
for (let i = 1; i <= 10; i++) {
    console.log(`第${i}個任務(wù)進入隊列,${Date.now()}`)
    workQueue.append(() => new Promise(resolve => {
        setTimeout(() => {
            resolve(i)
        }, 1000);
    }), (data) => {
        console.log(`第${data}個任務(wù)執(zhí)行完成,${Date.now()}`)
    })
}
// setTimeout(() => {
//     console.log('中斷')
//     workQueue.reject()
// }, 5000);

測試一下


image.png

測試一下中斷


image.png

還是callback 第六次了??榕吼,湊合用把
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饿序,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子羹蚣,更是在濱河造成了極大的恐慌原探,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽素,死亡現(xiàn)場離奇詭異咽弦,居然都是意外死亡,警方通過查閱死者的電腦和手機胁出,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門型型,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人全蝶,你說我怎么就攤上這事闹蒜。” “怎么了抑淫?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵绷落,是天一觀的道長。 經(jīng)常有香客問我始苇,道長嘱函,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任埂蕊,我火速辦了婚禮往弓,結(jié)果婚禮上疏唾,老公的妹妹穿的比我還像新娘。我一直安慰自己函似,他們只是感情好槐脏,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撇寞,像睡著了一般顿天。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔑担,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天牌废,我揣著相機與錄音,去河邊找鬼啤握。 笑死鸟缕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的排抬。 我是一名探鬼主播懂从,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹲蒲!你這毒婦竟也來了番甩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胰柑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡宴胧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了么翰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牺汤。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡辽旋,死狀恐怖浩嫌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情补胚,我是刑警寧澤码耐,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站溶其,受9級特大地震影響骚腥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓶逃,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一束铭、第九天 我趴在偏房一處隱蔽的房頂上張望廓块。 院中可真熱鬧,春花似錦契沫、人聲如沸带猴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拴清。三九已至,卻和暖如春会通,著一層夾襖步出監(jiān)牢的瞬間口予,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工涕侈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沪停,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓驾凶,卻偏偏與公主長得像牙甫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子调违,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355