在 RxJS 中链接多个 flatMap 运算符时,如何摆脱 Bluebird 警告?
How do I get rid of a Bluebird warning when chaining more than one flatMap operator in RxJS?
这段代码给我这个错误
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 的开发者控制台
中看到警告
无法判断该消息是来自 bluebird,而不是来自 Rxjs。你可以在这里看看:https://github.com/petkaantonov/bluebird/issues/854。那里处理的问题似乎与您完全相同。
虽然这很烦人(我不记得 Promise 规范中有任何内容说你必须 return null 否则你的计算机会对你大喊大叫),但我可以在下一个 PR 修复 Rx一两天。
这段代码给我这个错误
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 的开发者控制台
中看到警告无法判断该消息是来自 bluebird,而不是来自 Rxjs。你可以在这里看看:https://github.com/petkaantonov/bluebird/issues/854。那里处理的问题似乎与您完全相同。
虽然这很烦人(我不记得 Promise 规范中有任何内容说你必须 return null 否则你的计算机会对你大喊大叫),但我可以在下一个 PR 修复 Rx一两天。