如何在TypeScript异步函数执行完成后调用指定函数?
在TypeScript中异步函数执行完成后调用其他函数的简洁实现
当然可以在async函数执行完成后直接调用另一个函数,根据你提供的逻辑,完全不需要额外保存上一个动物对象,有几种更简洁的实现方式:
1. 若showNextAnimal是异步方法(返回Promise)
直接在async函数内部await异步操作完成后,调用计数方法:
const callNextAnimal = async () => { const animal = animalFinder.getNextAnimal(); // 等待动物展示逻辑完成 await playerSlideshow.showNextAnimal(animal); // 直接用当前获取的animal调用计数方法 animalSlideshowInstance.addCounterFor(animal); };
2. 若showNextAnimal是同步方法
如果没有异步操作,甚至可以去掉async,直接按顺序执行:
const callNextAnimal = () => { const animal = animalFinder.getNextAnimal(); playerSlideshow.showNextAnimal(animal); animalSlideshowInstance.addCounterFor(animal); };
如果必须保留async(比如后续会添加异步逻辑),同样可以直接顺序调用:
const callNextAnimal = async () => { const animal = animalFinder.getNextAnimal(); playerSlideshow.showNextAnimal(animal); animalSlideshowInstance.addCounterFor(animal); };
3. 外部调用时执行计数逻辑
如果需要在调用callNextAnimal的外部执行计数,只需让函数返回当前animal:
const callNextAnimal = async () => { const animal = animalFinder.getNextAnimal(); await playerSlideshow.showNextAnimal(animal); return animal; }; // 外部调用时处理计数 callNextAnimal().then(animal => { animalSlideshowInstance.addCounterFor(animal); });
以上方式都不需要额外维护prevAnimal状态,直接利用当前获取的animal对象完成计数,逻辑更简洁直观。
内容的提问来源于stack exchange,提问作者lost9123193
相关产品推荐
相关产品推荐

