У меня есть этот код
onRemove = (fileId) => {
this.setState({ removing: true });
Promise.all([this.props.onRemove(fileId)])
.then(() => {
console.log('I execute after');
this.setState({ removing: false });
})
.catch(() => {
this.setState({ removing: false });
});
}
onRemove
запускается onClick
из моего jsx
кода следующим образом:
onClick={() => {this.onRemove(fileId);}}
По причинам простоты мой this.props.onRemove
выглядит так:
removeFile = (UUID) => {
const sleep = milliseconds => new Promise(resolve => setTimeout(resolve, milliseconds));
return sleep(1500).then(() => {
console.log('I execute');
});
};
Когда я запускаю свой код, я получаю это в своей консоли:
I execute after
I execute
Что я, конечно, предполагаю, что это неправильно!
разве Promise.all
не должен ждать выполнения всех обещаний, прежде чем выполнить то, что находится в блоке then
?
Чего мне не хватает, я уже некоторое время бьюсь головой о стену.
Обновление:
Я добавил return
к removeFile
, как и предлагали комментарии, ноповедение остается прежним.