gpt4 book ai didi

javascript - 使用 Observable 排队 promise

转载 作者:行者123 更新时间:2023-11-30 20:35:49 24 4
gpt4 key购买 nike

我有一个 promise 流进来,我不希望它们在所有以前的 promises 都解决之前开始,但是同时使用 Observables。

我会尝试这样的事情:

let queue = Rx.Observable.create();

function addToQueue() {
// How do I add this to the queue.
}

function removeFromQueue() {
// How do i remove this item from the queue.
}

function getNewObservable() {
const queueItem = Rx.Observable.fromPromise(new Promise(resolve => {
setTimeout(() => {
removeFromQueue();
resolve();
}, 1000);
}));

addToQueue();
return queue;
}

getNewObservable().then(() => console.log('After 1000'));
getNewObservable().then(() => console.log('After 2000'));

// This one shouldn't run until the top two are finished
getNewObservable().then(() => console.log('After 3000'));

// This one would just wait for the previous one to resolve since
// the first two already resolved
setTimeout(() => {
getNewObservable().then(() => console.log('After 4000'));
}, 2500);

最佳答案

那只是 concatMap 运算符。唯一的问题是您在哪里创建 Promise:

const queue = Rx.Observable.create();
const results = queue.concatMap(p => createPromise(p));

results.subscribe(console.log);

queue.add(getNewObservable(...));
queue.add(getNewObservable(...));
queue.add(getNewObservable(...));

关于javascript - 使用 Observable 排队 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49857804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com