W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
隊(duì)列調(diào)度器
const queue: any;
將每個(gè)下一個(gè)任務(wù)放在隊(duì)列中,而不是立即執(zhí)行
queue
延遲使用調(diào)度程序時(shí),其行為與 async
調(diào)度程序相同。
當(dāng)沒有延遲使用時(shí),它將同步安排給定的任務(wù)-在安排好任務(wù)后立即執(zhí)行。但是,當(dāng)遞歸調(diào)用時(shí)(即在已調(diào)度的任務(wù)內(nèi)部),將使用隊(duì)列調(diào)度程序調(diào)度另一個(gè)任務(wù),而不是立即執(zhí)行,該任務(wù)將被放入隊(duì)列并等待當(dāng)前任務(wù)完成。
這意味著,當(dāng)您使用 queue
調(diào)度程序執(zhí)行任務(wù)時(shí),您確定它會(huì)在該調(diào)度程序調(diào)度的其他任何任務(wù)開始之前結(jié)束。
先遞歸調(diào)度,然后再做某事
import { queueScheduler } from 'rxjs';
queueScheduler.schedule(() => {
queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue
console.log('first');
});
// Logs:
// "first"
// "second"
遞歸重新安排自身
import { queueScheduler } from 'rxjs';
queueScheduler.schedule(function(state) {
if (state !== 0) {
console.log('before', state);
this.schedule(state - 1); // `this` references currently executing Action,
// which we reschedule with new state
console.log('after', state);
}
}, 0, 3);
// In scheduler that runs recursively, you would expect:
// "before", 3
// "before", 2
// "before", 1
// "after", 1
// "after", 2
// "after", 3
// But with queue it logs:
// "before", 3
// "after", 3
// "before", 2
// "after", 2
// "before", 1
// "after", 1
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: