【问题标题】:How do I get rid of a Bluebird warning when chaining more than one flatMap operator in RxJS?在 RxJS 中链接多个 flatMap 运算符时,如何消除 Bluebird 警告?
【发布时间】:2016-01-11 18:17:58
【问题描述】:

这段代码给了我这个错误

Warning: a promise was created in a handler but none were returned from it

var Observable = Rx.Observable;

var source = Observable.range(0, 3);

source
  .flatMap(item => {
    console.log('getting first promise');
    return Observable.fromPromise(
      new Promise((resolve, reject) => {
        resolve(5)
      })
    );
  })
  .flatMap(item => {
    console.log('item ==', item);
    console.log('getting second promise');
    return Observable.fromPromise(
      new Promise((resolve, reject) => {
        resolve(4)
      })
    );

  })
  .subscribe(x => console.log('sub1 == ', x));

如果我删除第二个 flatMap 运算符,我不会收到错误消息。为什么第二个 RxJS flatMap 运算符会导致 Bluebird 警告,但第一个 flatMap 不是?当然,我在使用 Bluebird Promises 时需要解决什么问题?

这是一个演示问题的Plunk,您将在 Chrome 的开发者控制台中看到警告

【问题讨论】:

  • 这是 RxJS 丢球,你真的什么都不做。

标签: javascript promise bluebird rxjs


【解决方案1】:

无法确定,但该消息来自 bluebird,而不是来自 Rxjs。您可以在这里查看:https://github.com/petkaantonov/bluebird/issues/854。这似乎是您在那里处理的完全相同的问题。

【讨论】:

  • 正确,这是一个 Bluebird 错误。抱歉,如果我在原始帖子中没有说得足够清楚。我只是认为 Bluebird 可能错误地推断出我没有在某处返回 Promise,因为 RxJS 的独特环境,这就是我将它合并到帖子中的原因。
【解决方案2】:

虽然这很烦人(我不记得 Promise 规范中有任何内容说您必须返回 null 否则您的计算机会对您大喊大叫),但我可以在接下来的一两天内 PR 修复 Rx。

【讨论】:

    猜你喜欢
    • 2016-12-26
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多