для ожидания l oop теряет элементы при итерации по Mon goose QueryCursor - PullRequest
0 голосов
/ 20 апреля 2020

В приложении nodeJs я использую for await l oop, чтобы перебрать курсор Mon goose внутри функции async. Примерно так:

    let count = 0
    const movies = Movies.find({}).cursor();
    for await (const movie of movies) {
      count++
    }
    console.log(count);

Это печатает 311, что правильно.

Проблема возникает, когда я пытаюсь выполнить asyn c операцию внутри l oop. Например:

    let count = 0
    const movies = Movies.find({}).cursor();
    for await (const movie of movies) {
      await new Promise(r => setTimeout(r, 10)); // <- any async operation
      count++
    }
    console.log(count);

При печати 296. Некоторые документы были утеряны.

Я не уверен, что это проблема Mon goose Speci c. До сих пор я не мог воспроизвести его с другими асинхронными c итераторами.

Есть идеи? Спасибо!

...