为什么这不是内存泄漏?

时间:2017-11-27 18:27:25

标签: javascript promise generator

我感兴趣的是使用生成器+承诺模式,其中promise将遍历生成器,解析每个产生的值,并将其传递回生成器。一旦完成,承诺将以最终回报(如果有)结束。

我在this page的底部找到了promisejs.org提供的一个优雅的实现,但是经过一段时间的研究后,我觉得这对于长期运行或无限生成器来说会是内存泄漏。我希望得到纠正。

我通过删除错误检查并使用箭头函数来简化它,以便简化:

function async(generator){
  function handle(result) {
    return result.done
      ? Promise.resolve(result.value)
      : Promise.resolve(result.value)
               .then(res => handle(generator.next(res)));
  }

  return handle(generator.next());
}

在我看来,handle的每次迭代都返回一个新的承诺,在发生器完成之前不会解决,然后它们都会级联起来。是这样的,如果是这样的话意味着这会因为足够的迭代而崩溃吗?

0 个答案:

没有答案