有没有办法实现<t>(x:Promise <asynciterableiterator <t>&gt;):TypeScript中的AsyncIterableIterator <t>?

时间:2018-04-06 18:07:30

标签: typescript promise iterator async-await async-iterator

所以我得到Promise<AsyncIterableIterator<T>>并且我需要简单AsyncIterableIterator<T>如何从承诺下解开AsyncIterableIterator<T>

1 个答案:

答案 0 :(得分:1)

是的,实际上很简单。我们要自己实现AsyncIterableIterator接口,对于每次对next的调用,我们首先都要拆开Promise

function unwrapAsyncIterableIteratorPromise (input) {
  return {
    next (value) {
      return input.then((iterator) => iterator.next(value))
    },
    [Symbol.asyncIterator] () {
      return this
    }
  }
}

npm和TypeScript键入也都在npm上:

https://www.npmjs.com/package/unwrap-async-iterable-iterator-promise