需要将Javascript Promise翻译成Observable

问题描述 投票:0回答:1

我试着找了一个可以说明问题的例子,但我在从一个例子翻译成另一个例子时遇到了问题。有什么好的方法可以把这个承诺翻译成一个新的承诺?Javascript Rxjs Observable?我意识到在现实世界中这样做可能很愚蠢,但这个练习更多的是我想更多地理解Promises(因为我对Observables的掌握比Promises好得多)。

编辑:我不想把自己包装成问题。我想通过专门使用Rxjs的observables来解决这个问题。零涉及Promises或toPromises。

    return new Promise((resolve, reject) => {
        setTimeout(() => {
            try {
                const result = fn();
                resolve(result);
            } catch (e) {
                reject(e);
            }
        }, time);
    });
}

promisifyTimeout(1000, () => {
    console.log('hello');
}).then(() => {
    console.log('done!');
}).catch((e) => {
    console.log('the thing failed! call support!');
});
javascript promise rxjs
1个回答
1
投票

为什么不直接使用RxJs from函数?

const obs$ = from(promise);

0
投票
const observable = new Observable(subscriber => {
  setTimeout(() => {
    try {
      const result = fn();
      subscriber.next(result);
      subscriber.complete();
    } catch (e) {
      subscriber.error(e);
    }
  }, 500);
});

observable.subscribe(console.log);

更多信息 此处.


0
投票

使用 timer:

return timer(time).pipe(map(() => fn()))

其实应该是你所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.