小编ric*_*ong的帖子

AsyncIterable 和 Observable 之间的实际区别是什么?

我最近一直挂在这个话题上。似乎 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 之间的实际差异。

javascript promise observable rxjs ecmascript-6

5
推荐指数
1
解决办法
649
查看次数

Javascript 中的 promise 和 @@iterator 的问题

我是这个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

你能帮我修一下吗?谢谢

javascript debugging node.js promise

4
推荐指数
1
解决办法
2789
查看次数