我最近一直挂在这个话题上。似乎 AsyncIterables 和 Observables 都具有类似流的特性,尽管它们的使用方式略有不同。
您可以像这样使用异步迭代
const myAsyncIterable = async function*() { yield 1; yield 2; yield 3; }
const main = async () => {
for await (const number of myAsyncIterable()) {
console.log(number)
}
}
main()Run Code Online (Sandbox Code Playgroud)
您可以像这样使用 observable
const Observable = rxjs
const { map } = rxjs.operators
Observable.of(1, 2, 3).subscribe(x => console.log(x))Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/rxjs/bundles/rxjs.umd.min.js"></script>Run Code Online (Sandbox Code Playgroud)
我的首要问题是基于这个RxJS pr
如果 observable 以比循环完成的速度更快的速度发出,则随着缓冲区变得更满,内存会增加。我们可以提供使用不同策略的其他方法(例如,仅使用最近的值等),但将其保留为默认值。请注意,循环本身可能有多个等待,这会加剧问题。
在我看来,异步迭代器本质上没有背压问题,那么Symbol.asyncIterator在 Observable 上实现(@@asyncIterator) 并默认为背压策略是否正确?鉴于 AsyncIterables,甚至需要 Observables 吗?
理想情况下,您可以通过代码示例向我展示 AsyncIterables 和 Observables 之间的实际差异。
我是这个Promise对象的新手。当我运行下面的代码时NodeJS
function solution(num){
return getData(num).then(getMax);
}
function getData(num){
return Promise.resolve({
first: 80 * num,
second: 30 * num
});
}
function getMax(numbers){
return Promise.resolve(Math.max(...numbers));
}
solution(10)
Run Code Online (Sandbox Code Playgroud)
我面对错误
(node:7814) UnhandledPromiseRejectionWarning: TypeError: Found non-callable @@iterator at getMax
你能帮我修一下吗?谢谢