Это может показаться странным вопросом, но позвольте мне объяснить: У меня есть эта функция, которую я хочу превратить в обещание, потому что я считаю, что некоторые события не срабатывают полностью, а другие начинают раньше (например, состояние игроковOverallTotal ошибочно потому что я не думаю, что он принимает во внимание код выше, поэтому мне нужно ждать для того, чтобы закончить перед установкой состоянияКак начать обещание в JavaScript?
handleClickTwist() {
this.dealToPlayer();
this.forceUpdate();
let playersDeck = this.state.playersDeck;
let playersDeckTotal = [];
for (var i=0; i < playersDeck.length; i++){
playersDeckTotal.push(playersDeck[i].rankValue)
}
let total = playersDeckTotal.reduce(function(a, b) {
return a + b;
},
0);
this.setState({playersOverallTotal: total});
this.total();
};
Я знаю, что обещает выглядеть ниже
anotherFunc(){
return new Promise((resolve, reject) => {
resolve()
}
}
и тогда я могу c все что-то вроде этого:
this.func().then(() => {
return this.anotherFunc();
}).then(() => {
return Promise.resolve(this.setState({playersOverallTotal: total}))
}).then(() => {
return this.anotherFun();
но я не могу подумать, как это сделать для этого кода. или, точнее, какова начальная функция, которую я могу вызвать в anotherFunc()
до kick функция выключена?
«что начальная функция я могу позвонить в anotherFunc() пнуть функцию выключения?» - Это будет «Обещание», которое вы уже звоните туда. – Quentin
Я не вижу никаких асинхронных функций в вашем коде. Поэтому вам не нужно обещать. Если либо 'dealToPlayer()', либо 'forceUpdate()' являются асинхронными, то они должны либо принять обратный вызов, либо возвратить обещание. Ваша проблема не в функции 'handleClickTwist()' – slebetman
По умолчанию код javascript ожидает завершения предыдущего кода перед продолжением. Посылы и обратные вызовы позволяют вам что-то делать, пока выполняется какой-то внешний процесс, например: загрузка изображения или json-файла. В вашем коде я не вижу никакого внешнего процесса, поэтому ваша ошибка, скорее всего, просто ошибка программирования. Это зависит от того, что делают ваши другие функции (dealToPlayer(), forceUpdate() и т. Д.) – Kokodoko