Как правильно запускать методы схемы несколько раз с помощью мангуста - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь запустить пользовательский метод дважды, но mon goose жалуется на сохранение в параллельном режиме:

ParallelSaveError: Can't save() the same doc multiple times in parallel

awaitPromises -массив имеет два те же методы внутри него, которые, как я думал, будут go плавно с await Promise.all(). К сожалению, невозможно заранее сложить значение, чтобы просто запустить метод один раз. 1012 *

// gameLogic.js
const calculateResult = async (player, enemy)=>{
    const awaitPromises = [];

    for (let i = 0; i < enemy.allowedAttacks; i += 1) { // max 3 iterations
        awaitPromises.push(player.loseHp(Math.random()*enemy.stats.attack))
        }
    
    try {
        await Promise.all(awaitPromises)
    } catch(error){
        console.log('error: ', error)
    }
}

1 Ответ

0 голосов
/ 21 июня 2020
  1. Обещание начинает выполняться немедленно, все, что делает Promise.all, - это возвращает обещание, которое выполняется, когда все переданные в обещаниях выполнены (но в то время они, возможно, уже были выполнены!). Если Mon goose не любит два обещания для одной и той же модели в полете, вам может потребоваться выполнить их одно за другим в пределах l oop:
await player.loseHp(Math.random()*enemy.stats.attack);
Почему вы звоните loseHp несколько раз? Не могли бы вы просто сложить урон и в конце позвонить loseHp?
...