javascript - 如何在 JavaScript 中使用 Observables 来处理 "eachSeries"?

标签 javascript asynchronous async-await rxjs observable

我将如何实现异步的功能 eachSeries您在哪里迭代数组并手动调用回调以继续迭代?

据我所知,您可以使用 RxJs 的 Observable 迭代数组,如 this :

var array = [1,2,3,4,5];

// Converts an array to an observable sequence
var source = Rx.Observable.from(array);

// Prints out each item
var subscription = source.subscribe(
  x => console.log('onNext: %s', x),
  e => console.log('onError: %s', e),
  () => console.log('onCompleted'));

// => onNext: 1
// => onNext: 2
// => onNext: 3
// => onNext: 4
// => onNext: 5
// => onCompleted

这里 Observable“自动”发出每个数组元素,但是我如何告诉它仅在需要时才继续。就像 RxJS 的主题 next() 方法一样。

事实上,我的现实场景是我需要在观察者回调中调用其他函数。使用异步,我将传递异步的回调以继续迭代该函数并从那里调用它。但我不知道如何使用 Observables 做到这一点。无论如何,它们适合这种情况吗?或者我应该坚持异步?

感谢您的帮助!

最佳答案

您不能使用 iterator/generator

这似乎是您想要的用例

您可以像本例中那样迭代它

function *iterator(source) {
  let i = 0, len = source.length;
  for (i = 0; i < len; i++) {
    yield source[i];
  }
}

var array = [1,2,3,4,5], iter = iterator( array );

var val = iter.next();
while (!val.done) {
  console.log(`${val.value} ( done? ${val.done} )` );
  val = iter.next();
}
console.log('done');

关于javascript - 如何在 JavaScript 中使用 Observables 来处理 "eachSeries"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40308285/

相关文章:

javascript - 在 jQuery Flip 插件中使用 javascript variavl

javascript - scaleBand() 将值左移

c# - TPL 数据流 block 中抛出的异常方法名称始终为 MoveNext()

javascript - jquery .done() 中的异步回调函数未执行

javascript - 按两个不同的值过滤 JSON

javascript - 如何在 Material Design Lite 中动态加载的 Select 中预先选择一个值?

multithreading - 我如何在 Delphi 中进行线程处理的各种方法之间进行选择?

javascript - 为什么异步ajax请求不起作用?

php - wp-async-task 不触发 run_action 方法

typescript - FCM 和 Typescript 异步等待 : Network Timing Out