Промисы нужны для обработки асинхронных событий, например запрос данных с сервера. Ты не знаешь сколько потребуется времени на этот запрос, но хочешь, чтобы когда он завершился тебе пришло уведомление об этом.
fetch('url').then(res => alert(res))
Тут мы выводим ответ от сервера как только он придет. Fetch возвращает промис, поэтому можем сразу использовать метод then.