循环提取表达nodejs时的数据错误

时间:2018-06-10 15:08:18

标签: javascript node.js express fetch

我有这段代码

Epoch 0 completed out of 100 loss: 456.28773515997455
Epoch 10 completed out of 100 loss: 6.713319106237066
Epoch 20 completed out of 100 loss: 0.24847120749460316
Epoch 30 completed out of 100 loss: 0.09907744570556076

但是当我进行循环函数获取时它会返回错误的值:

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

初始值:

  

用户名:“admin”,余额:15000

我得到了结果:

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()

2 个答案:

答案 0 :(得分:1)

Test不应与async ()一起声明,因为它已经返回Promise,使用async会使其返回Promise结算Promise

如果您要逐个执行Test() 10次,则需要在for循环中await

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();
}

答案 1 :(得分:0)

我认为在return声明中您需要使用async运算符,该运算符通常会在await告诉您的应用仅在操作完成后才完成。