Основными задачами обратных вызовов является достижение асинхронного программирования.
Обратные вызовы более полезны, когда вы хотите представить асинхронный API-интерфейс или написать асинхронный код, обеспечивающий разделение задач и возможность повторного использования.
например, представьте, что вы пишете небольшой инструмент, который дает людям возможность анимировать элементы DOM.
вы бы дали функцию, подобную следующей:
import MyCoolTweeningEngine from "lib/MyCoolTweeningEngine"
function animate(elem, props, callback) {
MyCoolTweeningEngine(elem, props)
.then((res) => res.json())
.then(() => callback())
}
и люди собираются используйте ваш инструмент следующим образом:
animate(
".my-animated-element",
{ x: 100, scale: 1 },
function () => console.log("animation finished"))
Обратные вызовы были очень распространены до появления Promises, теперь с Promises мы можем написать относительно более чистый код:
const res = await animate(".my-elem", { scale: 1 });
console.log("animation finished")
в вашем случае вы можете сделать это для более чистого и многократно используемого кода:
import serverRequest from "../my-awesome-utils/serverRequest"
serverRequest("The glass is half ", function getResults(results){
console.log("Response from the server: " + results);
});