Типы для функции, возвращающей объект Symbol.asyncIterator

Я создаю класс, который получает массив URL-адресов и использует asyncIterator для обработки этих URL-адресов один за другим. В настоящее время весь код работает, но я хочу явно добавить тип для методов execute() и crawl(), поэтому прошу вашей помощи. заранее спасибо

class Crawlers {
  public urls: string[];

  constructor(urls: string[]) {
    this.urls = urls;
  }

  private execute(cookie: ICookie) {
    const urlsIterator = this.urls[Symbol.iterator]();
    return {
      async next() {
        const iteratorResult = urlsIterator.next();
        if (iteratorResult.done) {
          return { done: true };
        }
        const url = iteratorResult.value;
        try {
          const payload = await request(url, cookie);
          return {
            done: false,
            value: payload,
          };
        } catch (err) {
          const error: IRequestError = {
            url,
            err: err.message,
          };

          return {
            done: false,
            value: error,
          };
        }
      },
    };
  }

  public crawl(cookie: ICookie) {
    return {
      [Symbol.asyncIterator]: this.execute.bind(this, cookie),
    };
  }
}

0 ответов

Другие вопросы по тегам