【发布时间】:2018-03-30 01:47:34
【问题描述】:
我正在为我的有趣测试项目设计一些机制原型,因为我知道我需要延迟很多我认为我需要 Promise 的事情。
然而,事实证明它并没有像我想象的那样工作。虽然目前这对我来说不是问题,但我知道稍后我将不得不解决这个问题。
代码如下:
if(nextProps.mechanics.turn === 'enemy'){
let enemyTurnPromise = new Promise((resolve, reject) =>{
let i = 0;
_.forEach(this.props.enemies, (enemy, index) =>{
setTimeout(this.handleEnemyAttack, 1000 * index)
i++;
})
resolve(i)
})
enemyTurnPromise.then(r =>{
console.log('test', r);
this.props.switchTurn('ally')
})
}
目前我将状态切换为“敌人”,它会立即切换回“盟友”并打印“i”值,而 setTimeout 仍在缓慢解决。
没有一些奇怪的回调块,有没有什么优雅的方法来解决这个问题? async/await 可以帮助解决这个问题吗?或者也许是一些可以消除大量不必要代码的库?
【问题讨论】:
-
我认为是XY Problem。您没有具体说明问题是什么,而是尝试将其抽象出来并希望得到该抽象问题的答案。
标签: javascript reactjs promise