Я пишу функцию в TypeScript, которая выглядит следующим образом:
record_time():any {
if (some_condition) {
axios.post('api/time').then(() =>
updateTimeDisplay()
);
} else {
axios.put('api/time').then(() =>
updateTimeDisplay()
);
}
}
И это работает, но, как вы можете видеть, я вызываю одну и ту же строку, updateTimeDisplay()
, независимо отусловна.Для краткости, я хотел бы знать, есть ли способ переписать это так, чтобы я написал только updateTimeDisplay()
один раз.Попробовал что-то вроде ниже, но код сломался с этой ошибкой: Cannot find name 'then'.Vetur(2304)
record_time():any {
if (some_condition) {
axios.post('api/time');
} else {
axios.put('api/time');
}.then(() =>
updateTimeDisplay()
)
}
[Обновление] Я понял, что для моего случая имеет больше смысла изменить структурувот так (отделите updateTimeDisplay
от record_time
и вызовите обе функции внутри другой функции):
async switch_button_status_record_time() {
await this.switch_button_status();
await this.record_time();
updateTimeDisplay();
}
async record_time() {
if (some_condition) {
axios.post('api/time')
} else {
axios.put('api/time')
}
}
Однако это привело к сбою кода - иногда updateTimeDisplay
вызывался бы неправильно,У меня сложилось впечатление, что строки с await
будут вызываться по порядку (switch_button_status
, затем record_time
, затем updateTimeDisplay
).Что здесь не так?