Javascript 调用可观察的';s onNext()方法在其派生链中

Javascript 调用可观察的';s onNext()方法在其派生链中,javascript,reactive-programming,rxjs,Javascript,Reactive Programming,Rxjs,我有一些这样的代码: 函数getTokenFromStorage(cb){ //从存储器中获取令牌 var token=getToken(); //将其馈送到回调函数 cb(代币); } var主体=新接收行为主体(42); var标记=主题 .flatMap(函数(){ 从回调返回Rx.Observable.fromCallback(getTokenFromStorage)(); }) .flatMap(功能(令牌){ //如果令牌已过期,我们将其抛出到重试处理程序并重试 //希望它能以某种方

我有一些这样的代码:

函数getTokenFromStorage(cb){ //从存储器中获取令牌 var token=getToken(); //将其馈送到回调函数 cb(代币); } var主体=新接收行为主体(42); var标记=主题 .flatMap(函数(){ 从回调返回Rx.Observable.fromCallback(getTokenFromStorage)(); }) .flatMap(功能(令牌){ //如果令牌已过期,我们将其抛出到重试处理程序并重试 //希望它能以某种方式更新 如果(isExpired(令牌)){ 抛出“令牌已过期”; } 返回Rx.Observable.just(令牌); }) .retryWhen(函数(错误){ //获取新令牌并将其存储到存储器 更新令牌();
//重新启动整个链如果我正确理解您的示例,您可以使用来处理错误。
我可能误解了您的意图,但为什么还要抛出一个错误呢?您不能直接调用renewToken()吗当令牌过期并返回结果时?

我发现很难理解您的问题。您的
retryWhen
将重复我所理解的可观察链,这将在1.000ms后进行。因此,不必执行
subject.onNext(42)
。当您这样做时,假设您的主题在即时计划程序中,您会立即重新启动整个链(正如您准确提到的)。那么,在1.000毫秒后重新启动整个链有什么意义?你应该开始用简单的英语解释你想要实现的目标,然后是你的预期输出与输入,然后是你正在争论的备选方案。