Неправильные данные при извлечении цикла expressjs nodejs - PullRequest
0 голосов
/ 10 июня 2018

У меня есть этот код

const admin = await this.userRepository.findOne({ username: 'admin' });    
admin.balance -= 5000;
return await this.userRepository.save(admin).then(data => {
    return { balance: data.balance };
});

, но он возвращает неправильное значение, когда я выполняю выборку из цикла:

const Test = async() => fetch('http://localhost:8843/user', {method: "POST"}).then(res=>res.json()).then(data=> console.log(data))
for(let i =0; i<10; i++) Test()

Начальное значение:

имя пользователя: "admin", баланс: 15000

Я получил результат:

{balance: 10000}
{balance: 10000}
{balance: 10000}
{balance: 10000}
{balance: 10000}
{balance: 10000}
{balance: 5000}
{balance: 5000}
{balance: 5000}
{balance: 5000}

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Test не должен быть объявлен с async (), поскольку он уже возвращает Promise, использование async заставит его вернуть Promise, который разрешает Promise.

Если вы хотите выполнить Test() 10 раз по одному, вам нужно await в цикле for.

const Test = () => (
  fetch('http://localhost:8843/user', {method : "POST"})
  .then(res=>res.json())
  .then(data=> console.log(data))
);

// somewhere inside a `async` function
for(let i = 0; i < 10; i++) {
  await Test();
}
0 голосов
/ 10 июня 2018

Я думаю, что в операторе return вам нужно использовать оператор async, который обычно появляется после await, указывающего вашему приложению завершиться только после завершения операции.

...