【问题标题】:Long stack traces in rxjsrxjs 中的长堆栈跟踪
【发布时间】:2018-01-29 15:41:57
【问题描述】:

RxJS 5 中长堆栈跟踪的解决方案是什么? IE。堆栈跟踪,包括导致错误被抛出的异步调用。

我已经看到了针对旧版本的各种 hack,但对于这个版本,除了开发人员正在努力的承诺之外,什么都没有。

例如,我遇到了以下堆栈跟踪:

TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
    at Object.subscribeToResult (MyProject\node_modules\src\util\subscribeToResult.ts:82:23)
    at MergeMapSubscriber._innerSub (MyProject\node_modules\src\operators\mergeMap.ts:138:14)
    at MergeMapSubscriber._tryNext (MyProject\node_modules\src\operators\mergeMap.ts:134:10)
    at MergeMapSubscriber._next (MyProject\node_modules\src\operators\mergeMap.ts:118:12)
    at MergeMapSubscriber.Subscriber.next (MyProject\node_modules\src\Subscriber.ts:96:12)
    at ArrayObservable._subscribe (MyProject\node_modules\src\observable\ArrayObservable.ts:124:20)
    at ArrayObservable.Observable._trySubscribe (MyProject\node_modules\src\Observable.ts:217:19)
    at ArrayObservable.Observable.subscribe (MyProject\node_modules\src\Observable.ts:202:87)
    at MergeMapOperator.call (MyProject\node_modules\src\operators\mergeMap.ts:92:19)
    at Observable.subscribe (MyProject\node_modules\src\Observable.ts:200:16)
    at Object.subscribeToResult (MyProject\node_modules\src\util\subscribeToResult.ts:34:21)
    at MergeMapSubscriber._innerSub (MyProject\node_modules\src\operators\mergeMap.ts:138:14)
    at MergeMapSubscriber._tryNext (MyProject\node_modules\src\operators\mergeMap.ts:134:10)
    at MergeMapSubscriber._next (MyProject\node_modules\src\operators\mergeMap.ts:118:12)
    at MergeMapSubscriber.Subscriber.next (MyProject\node_modules\src\Subscriber.ts:96:12)
    at ArrayObservable._subscribe (MyProject\node_modules\src\observable\ArrayObservable.ts:124:20)
    at ArrayObservable.Observable._trySubscribe (MyProject\node_modules\src\Observable.ts:217:19)
    at ArrayObservable.Observable.subscribe (MyProject\node_modules\src\Observable.ts:202:87)
    at MergeMapOperator.call (MyProject\node_modules\src\operators\mergeMap.ts:92:19)
    at Observable.subscribe (MyProject\node_modules\src\Observable.ts:200:16)
    at Observable._subscribe (MyProject\node_modules\src\Observable.ts:275:24)
    at Observable.subscribe (MyProject\node_modules\src\Observable.ts:202:63)

现在,这绝对是一个 100% 的用户错误,可以链接到我自己的代码的某些部分,但实际上无法判断它来自哪里。

【问题讨论】:

    标签: javascript rxjs rxjs5


    【解决方案1】:

    当您使用 .catch 块并且请求与 mergeMap 异步时,最有可能出现此类错误。

    你应该从 catch 块返回 observable。

     .catch((response) => {
            // Do your things here
            return Rx.Observable.empty();
        });
    

    是的,这不是一个理想的答案:(

    祝调试顺利!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2011-05-25
      • 2011-05-13
      相关资源
      最近更新 更多