我试着找了一个可以说明问题的例子,但我在从一个例子翻译成另一个例子时遇到了问题。有什么好的方法可以把这个承诺翻译成一个新的承诺?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!');
});
为什么不直接使用RxJs from函数?
const obs$ = from(promise);
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);
更多信息 此处.
使用 timer
:
return timer(time).pipe(map(() => fn()))
其实应该是你所需要的。