Сравнение двух конструкций одной и той же функции асинхронности / ожидания - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь определить, являются ли эти два способа настройки этого раздела функции функционально эквивалентными - с точки зрения времени выполнения блока forEach().

ПРИМЕЧАНИЕ: «Клиент» здесь представляет модель Mongoose.

Вот первая конструкция функции:

  async processRecords() {
   // other code
    while (recordsProcessed < recordsTotalCount) {
      await Customer.find({
          updatedAt: {
            $gte: this.lastUpdateTime
          }
        })
        .limit(recordsPerRun)
        .skip(recordsProcessed)
        .exec((err, docs) => {
          docs.forEach((doc) => {
            this.next(doc);
          });
        });
     }
  }

А вот и второй:

  async processRecords() {
    // other code
    while (recordsProcessed < recordsTotalCount) {
      request.parameters.skip = recordsProcessed;
      request.parameters.limit = recordsPerRun;

      let docs = await request.find(Customer, {
        updatedAt: {
          $gte: this.lastUpdateTime
        }
      });
      docs.forEach(doc => {
        this.next(doc);
      });
    }
  }

В частности, мне любопытно, будет ли блок forEach() работать иначе или одинаково. Для этих двух конструкций функции сначала будут «найдены» все записи, а затем forEach() будет выполняться для каждой записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...