2

所以我明白了Promise<AsyncIterableIterator<T>>,我需要明白AsyncIterableIterator<T>如何AsyncIterableIterator<T>从承诺中解开?

4

1 回答 1

1

是的,这实际上很简单。我们想自己实现AsyncIterableIterator接口,每次调用next我们首先打开Promise.

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

它也与 TypeScript 类型一起在 npm 上:

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

于 2018-07-10T16:25:42.643 回答