Есть несколько способов выполнения функции после завершения работы предыдущей функции в JavaScript. Давайте поговорим о некоторых из них: 1. Использование Callback. Callback - это функция, которая вызывается после завершения выполнения другой функции. Посмотрите пример ниже: ```javascript function firstFunction(callback) { // Эмулируем асинхронный код с помощью setTimeout setTimeout(function() { console.log('First function finished'); callback(); }, 1000); } function secondFunction() { console.log('Second function finished'); } firstFunction(secondFunction); ``` 2. Использование Promises. Промисы используются для обработки асинхронных операций в JavaScript. Вот как это выглядит: ```javascript function firstFunction() { return new Promise(function(resolve, reject) { setTimeout(function() { console.log('First function finished'); resolve(); }, 1000); }); } function secondFunction() { console.log('Second function finished'); } firstFunction().then(secondFunction); ``` 3. Использование Async/Await. Это более современный подход к обработке асинхронного кода в JavaScript. Вот пример: ```javascript async function firstFunction() { return new Promise(function(resolve, reject) { setTimeout(function() { console.log('First function finished'); resolve(); }, 1000); }); } async function secondFunction() { await firstFunction(); console.log('Second function finished'); } secondFunction(); ``` На практике выбор метода зависит от ваших потребностей и возможностей вашего кода. Помните, что асинхронный код может быть более сложным для отладки и понимания, чем синхронный код, поэтому старайтесь всегда писать код максимально читаемым.