Javascript承诺可观察的翻译

时间:2020-04-24 21:14:18

标签: javascript promise rxjs

我试图找到一个可以说明问题的例子,但是我遇到了从一个例子转换到另一个例子的问题。将这个Promise转换成 Javascript Rxjs Observable的好方法是什么?我意识到在现实世界中这样做可能很愚蠢,但是此练习更多地是关于我尝试更多地了解Promises(因为我对Proserves的理解要比对Promises的掌握要好得多。)

编辑:我不想让自己陷入困境。我想通过专门使用Rxjs observables解决此问题。零承诺或涉及的承诺。

    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!');
});

3 个答案:

答案 0 :(得分:1)

为什么不仅仅使用来自功能的RxJ?

const obs$ = from(promise);

答案 1 :(得分: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);

更多信息here

答案 2 :(得分:0)

使用timer

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

实际上应该就是您所需要的。