Урок 8. JavaScript. Как работает Async, Await. Работа с сервером c fetch

Sdílet
Vložit
  • čas přidán 5. 07. 2019
  • Эксклюзивный контент на моем Boosty: boosty.to/vladilen
    Telegram: t.me/js_by_vladilen
    Instagram: / vladilen.minin
    Roadmap по каналу:
    vladilen.notion.site/Roadmap-...
    Урок 8. JavaScript. Как работает Async, Await. Работа с сервером c fetch
    В ролике я расскажу о том, как работают операторы async await в Javascript на примере работы с сервером с методом fetch
    Вы узнаете как применять async await и как обрабатывать ошибки, если они есть
    Сложный JavaScript простым языком:
    • Урок 1. JavaScript. Чт...

Komentáře • 276

  • @VladilenMinin
    @VladilenMinin  Před 7 měsíci

    Эксклюзивный контент на моем Boosty: boosty.to/vladilen

  • @tyortyo
    @tyortyo Před 4 lety +29

    Офигенное объяснение. Здорово, что приведено сравнение с промисами, тогда все понятно становится! Супер

  • @mikurrey416
    @mikurrey416 Před 4 lety +7

    Большущее спасибо :) Без таких знаний асинхронность не хило выносит мозг)))

  • @mgm_smile
    @mgm_smile Před 5 lety +122

    Как всегда все четко и по теме. Владилен ты делаешь огромный вклад в развитие ру комьюнити, спасибо тебе =)

  • @qazxswedc389
    @qazxswedc389 Před 5 lety +9

    огромное спасибо за видео!!! такого понятного и простого объяснения async/await я еще не встречал. очень классные и понятные видео

    • @VladilenMinin
      @VladilenMinin  Před 5 lety +1

      Благодарю за отзыв, рад такому результату)

  • @nivaech
    @nivaech Před 4 lety +4

    Владилен, спасибо. Благодаря твоему каналу время карантина вследствие чертового коронавируса проходит как нельзя плодотворно.

  • @unknownWakeborder
    @unknownWakeborder Před 3 lety +6

    Я в свое время так намучался с получение данных с апи.... а тут было все так доступно. Очень полезно, спасибо тебе за контент!

  • @user-tg9wd2hm1g
    @user-tg9wd2hm1g Před 4 lety +5

    Благодарю Вас Владилен! С Вами очень интересно изучать JavaScript!)

    • @awenn2015
      @awenn2015 Před 3 lety +1

      Согласен, у других смотрел так и не понял что такое promise, async and await, методы массивов, которые новые map и тд, а тут все сразу стало понятно, и операторы rest и spread туда же, столько полезных вещей которыми я раньше не пользовался, жаль конечно))

  • @Wraith2401
    @Wraith2401 Před 5 lety +29

    на мой взгляд самое доступное объяснение работы async/await в рунете. лайк/подписка

  • @svdl3000
    @svdl3000 Před 4 lety +1

    Отличное видео - аккуратное объяснение важных истин простым языком.

  • @uracan7872
    @uracan7872 Před 5 lety +10

    Спасибо за видео! Proxy теперь нужен)

  • @Abdul-hy4cy
    @Abdul-hy4cy Před 2 lety

    Как ты круто объясняешь! Последовательно, по уровню сложности.

  • @s.konstantin
    @s.konstantin Před 5 lety +1

    Спасибо! Как всегда все понятно.
    Красавчик!

  • @user-wj9jo6wc6c
    @user-wj9jo6wc6c Před 2 lety

    Блин, ты крут, человек! Учился по твоему ангуляр курсу, теперь вот доучиваю в ютубе. Супер!

  • @Vlad-em1bx
    @Vlad-em1bx Před 4 lety +16

    Это лучший материал по JS на русскоязычном youtube.
    Отдельно хотелось бы поблагодарить Вас Владилен за курс по Vue. Он превосходен. Он помог мне довольно быстро вникнуть во Vue.
    Посоветовал его одному коллеге верстальщику, он также остался им очень доволен.
    Спасибо Вам огромное! :)))

  • @dushnilas
    @dushnilas Před 3 lety +4

    Спасибо тебе Владилен за твои видосы.

  • @damir-n1
    @damir-n1 Před 2 lety

    Спасибо Вам большое, Владилен. Очень доступно.

  • @yakut54
    @yakut54 Před 4 lety

    Влад, ты красавчик! Спасибо тебе за науку! Вкладываешь знания в наши бестолковые головы.

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +4

      Не думаю, что они бестолковые, иначе как бы они нашли мой канал:)
      Шучу конечно, но за отзыв спасибо

  • @lumeaceaiuluisrl6343
    @lumeaceaiuluisrl6343 Před 3 lety +2

    Владилен, спасибо за урок!

  • @user-kg6fz5tz2b
    @user-kg6fz5tz2b Před 5 lety +5

    Спасибо, Добрый Человек!!!

  • @mumin_f
    @mumin_f Před 4 lety +2

    Спасибо! Переписывал store для авторизации из урока по Vue CRM, там была готовая библиотека firebase, а мне надо было через API реализовывать. Это видео очень выручило!

  • @PizekattoX
    @PizekattoX Před 4 lety

    Отлично обяснил, понятно и без лишних слов

  • @user-yx4ov2xx8s
    @user-yx4ov2xx8s Před 4 lety +2

    Супер видео! Спасибо вам! Плейлист тоже классный!

  • @user-un2wj8ee9s
    @user-un2wj8ee9s Před 4 lety +2

    Очень круто обьясняешь. Коротко и по делу!)) Pozdrawiam z Polski!!!

  • @enotus_chang
    @enotus_chang Před rokem

    Пожалуй, самое понятное объяснение. Спасибо.

  • @user-ml8hn5kg9e
    @user-ml8hn5kg9e Před 2 lety

    Спасибо за урок очень мощьный курс по JavaScript

  • @user-uo8jd7ys2x
    @user-uo8jd7ys2x Před rokem

    Очень подробно разжевал!спасибо огромное за труд

  • @dartoranges
    @dartoranges Před 3 lety

    Владилен ты не представляешь как ты мне помог этим уроком!!!!

  • @user-lj8xm1ye7q
    @user-lj8xm1ye7q Před 3 lety

    Конструктивно и максимально доходчиво.

  • @radikovichkz2470
    @radikovichkz2470 Před 3 lety +9

    Владилен вы не поверите: но во время создания промиса вместо setTimeout(()=>r(),ms) можно просто записать setTimeout(r,ms); r - это есть resolve, и мы передаём ссылку на функцию в качестве колбека

  • @RewCSharp
    @RewCSharp Před 6 měsíci

    Спасибо за урок!

  • @temirkhanamanbaev42
    @temirkhanamanbaev42 Před 4 lety

    Классно объяснил, браво! Спасибо!

  • @parlaitaliano
    @parlaitaliano Před rokem

    Я что-то поняла, неужели, офигеть! но боюсь что окажется, что рано радуюсь, что все-таки не поняла, потому что я не могу поверить, что я наконец это поняла. Спасибо Вам

  • @user-gu5ir3zs4v
    @user-gu5ir3zs4v Před 5 lety +2

    Это чертовски полезно

  • @Vlad-jp3co
    @Vlad-jp3co Před rokem +5

    Твои уроки раскрывают суть каждой концепции. Ты описываешь проблему и механизм в языке, который эту проблему решает. Информация так усваивается намного лучше. В других уроках описывают некоторые факты о части языка и не говорят как это использовать и новичок не понимает как он это может применить. Спасибо большое за труд

  • @Grigoren_com
    @Grigoren_com Před rokem

    спасибо за ролик! очень полезная информация

  • @nicksimmons4722
    @nicksimmons4722 Před 3 lety +4

    в прошлом году доходило долго, а в этом намного легче и уже сразу понятно)) очень информативные и понятные уроки) спасибо за труды

  • @azalinka3721
    @azalinka3721 Před 3 lety

    спасибо за такое прекрасное обьяснение!!!

  • @nikdanik
    @nikdanik Před 5 lety +77

    Про веб воркеры было бы супер! Классный видос, лайк

    • @realfootball338
      @realfootball338 Před 4 lety

      про sharedArrayBuffer семафоры мютексы и атомарные операции.

    • @awenn2015
      @awenn2015 Před 3 lety

      Твоя мечта сбылась

    • @bekzhan356
      @bekzhan356 Před 3 lety

      ещё вебсокеты каеф

  • @user-om5co3nd8u
    @user-om5co3nd8u Před 2 lety

    Люблю такие видосы. Где не льют 50 минут теорию со слайдами на своем птичьем наречии, а за 14 минут на практике показывают как, да чё. Спасибо автору!

  • @gorbulevsv
    @gorbulevsv Před rokem

    Спасибо, все очень доступно!!!

  • @ammoney159
    @ammoney159 Před 2 lety

    Спасибо большое за видосы красавчик!

  • @MrFeedme86
    @MrFeedme86 Před 4 lety +1

    Владилен топ! Если у тебя будет своя школа, я пойду туда учиться :D

  • @phonty29
    @phonty29 Před 2 lety

    Your teaching is very good. Thank you

  • @sexy.big.monkey
    @sexy.big.monkey Před 5 lety +2

    Опа новый видосик! 😋

  • @bodomzor
    @bodomzor Před 5 lety +1

    Красава Вледилен!

  • @admusmanov3009
    @admusmanov3009 Před rokem

    Обожаю тебя!!!

  • @Pr0xytube
    @Pr0xytube Před 5 lety

    Спасибо, урок действительно полезный. Впрочем, как всегда)

  • @iznu3
    @iznu3 Před 3 lety

    Спасибо за видео!

  • @imbaquad
    @imbaquad Před 5 lety

    Круто ! Спасибо)!

  • @onlynowmotivation
    @onlynowmotivation Před 2 lety

    Спасибо большое! От души!!!

  • @vladislavivanov4124
    @vladislavivanov4124 Před 4 lety

    Спасибо! Лучший)

  • @nikishiro8278
    @nikishiro8278 Před 5 lety +8

    Спасибо. Про Webpack круто было бы послушать :)

    • @VladilenMinin
      @VladilenMinin  Před 5 lety +5

      Думаю сделаю быстрый курс по нему)

  • @void6237
    @void6237 Před rokem +1

    "Фетчить некоторые туду", буду теперь это говорить когда меня спрашивают чем я занимаюсь

  • @27sosite73
    @27sosite73 Před 2 lety

    ska, ты топ, Владилен
    спасиобо

  • @web2905
    @web2905 Před 3 lety

    Спасибо за видео :)

  • @sapperus
    @sapperus Před 4 lety

    Круто, спасибо!

  • @Fxgleb
    @Fxgleb Před 4 lety +11

    Посмотрев этот ролик я прям осознал что такое асинхронность в жс и в чем разница между then и await (наконец таки)

  • @independent3253
    @independent3253 Před rokem

    Круто 👍

  • @user-dc7ot2lm1m
    @user-dc7ot2lm1m Před 5 lety +1

    Спасибо, но это уже тяжеловато было понять) Усугубилось всё стрелочными функциями

  • @artemijeka
    @artemijeka Před 2 lety

    Спасибо!

  • @sekirogenshiro2210
    @sekirogenshiro2210 Před 4 lety

    хороший урок

  • @yuramaster4354
    @yuramaster4354 Před 2 lety

    thank you again )

  • @user-qw9uo4wo5p
    @user-qw9uo4wo5p Před 3 lety

    Благодарю!!

  • @user-od6hi8we5p
    @user-od6hi8we5p Před rokem +4

    Все-таки Promise и async/await одна из самых сложных тем в JS. Но после таких уроков все становится сразу понятно

  • @user-gu5ir3zs4v
    @user-gu5ir3zs4v Před 5 lety +6

    Теперь уж точно прям очень нужен прокси

  • @ssurrokk
    @ssurrokk Před 4 lety

    Спасибо

  • @rvvvr
    @rvvvr Před 3 lety

    спасибо

  • @user-dk4ji5eb6g
    @user-dk4ji5eb6g Před 4 lety

    Спасибо большое за видео) Очень доступно и понятно!!!
    Владилен, вы не могли бы снять видео про pwa во vue-cli3? Или оно уже есть, а я не нашла на канале?

  • @StalkerRaftik
    @StalkerRaftik Před 2 lety

    Усложнил все до невозможности. Не знаю насчёт остального, но это видео было максимально сложным для новичка

    • @user-su6gu3me1r
      @user-su6gu3me1r Před 2 lety

      я чувствую себя максимально тупым последние несколько уроков

  • @alexgrinberg1888
    @alexgrinberg1888 Před 3 lety

    Владилен! Спасибо за ваши уроки. Я часто смотрю ваши уроки на iPhone. Нельзя ли поменять черный бэкграунд на белый, чтобы лучше был виден код? Спасибо!

  • @AbraKadabra000
    @AbraKadabra000 Před 5 lety

    красиво шпарит.
    на двойной скорости послушал. всо чотко

  • @talas12341
    @talas12341 Před 4 lety +106

    всегда так - смотришь, всё понятно, начинаешь делать, ну нихуя не понятно‼ пока собственными ручками не сделаешь, хрен поймешь‼

    • @user-xd5td7px9t
      @user-xd5td7px9t Před 4 lety

      Это всегда так ! )

    • @konstantinsoluyanov8505
      @konstantinsoluyanov8505 Před 4 lety +3

      сначала смотришь, потом делаешь, потом еще раз смотришь, благо youtube иногда подкидывает уже просмотренные ролики

    • @Lynatik001
      @Lynatik001 Před 4 lety +1

      я помню когда делал все через then только, понимал что это крутая штука что позволяет дождатся асинхронной функции, словить результат и далее его обрабатывать. ну как асинк и авейт. про промисы вобще не шарил думал промис = асинхронному методу. типа так называют в яваскрипте просто так ХД)

    • @yaroslavzef7267
      @yaroslavzef7267 Před 3 lety

      И это он еще не самый понятливый объяснятель)

    • @ricojohn8249
      @ricojohn8249 Před 2 lety

      @@yaroslavzef7267 а кто самый понятливый?

  • @kaelnlarien7623
    @kaelnlarien7623 Před 3 měsíci

    Самое главное, что смотря на async await может показаться, что мы только ждём код и всё. НО, как и then, await не блокирует код, а просто откладывает выполнение действующей функции (или call stack если смотреть глобальнее) и продолжит выполнять код дальше
    Такой код выведет 3 1 4 2. Если уже поставить await верхнего уровня перед вызовом функции, то уже будет 3 1 2 4, так как мы уже дожидаемся этой функции и по сути смысла в асинхронности тогда нет. Код внутри промиса выполняется синхронно, поэтому туда реально нужно ложить то, чего вы хотите подождать типа запроса или того же setTimeout
    ```JavaScript
    async function f() {
    console.log("1")
    let promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("готово!"), 1000)
    });
    let result = await promise; // будет ждать, пока промис не выполнится (*)
    console.log("2")
    alert(result); // "готово!"
    }
    console.log("3")
    f();
    console.log("4")
    ```

  • @null-lu8it
    @null-lu8it Před rokem

    Любишь ты все темы усложнять

  • @jimmayhem990
    @jimmayhem990 Před 7 měsíci

    Спасибо большое за отличное объяснение! Не совсем понял момент с
    .then(() => {
    return fetch(url)
    }
    .then(response => response.json())
    fetch() возвращает Promise, then() оборачивает все что в return в новый Promise. Получается, что результат then() - Promise? Как тогда последующий then() вызывает у этого объекта json() ?

  • @kookaburru
    @kookaburru Před 4 lety

    async/await это синтаксический сахар на генератор/промис, где генератор используется для превращения асинхронного кода в синхронный, а промис для выполнения асинхронного кода. То есть тут суть в генераторе, а промис деталь реализации генератора. Промис можно заменить на простой обратный вызов (callback).

  • @user-to8bv5yr5p
    @user-to8bv5yr5p Před 4 lety

    Видосы огонь, Владилен, спасибо за работу)) Но не въехал зачем нужна задержка в 2сек.

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c Před 4 lety

      Для наглядности. В реальных проектах никакие задержки не нужны.

  • @alexandrskuratovich1394
    @alexandrskuratovich1394 Před 2 lety +3

    А почему стоит await на response.json() , это ведь уже синхронная операция? И можно ли делать return в async методах?

  • @user-in3jd6cm2t
    @user-in3jd6cm2t Před 2 lety +1

    🤯👍

  • @spiteman
    @spiteman Před 3 lety

    попробовал заменить в своем микропроекте .then на async/await и получилось даже еще более громоздко, может чуть читается легче, так и мне никто не мешает .then переносить на новую строку.

  • @DanReksar
    @DanReksar Před 5 lety

    Спасибо) т.е. предпочтительнее пользоваться async / await, чем промисами напрямую. Или есть ситуации, когда async / await не получится использовать?

    • @VladilenMinin
      @VladilenMinin  Před 5 lety +2

      Я бы почти всегда их использовал, редко когда нужны именно промисы
      Но стоит помнить, что еще не все бразуеры нативно поддерживают подобный синтаксис и лучше пропускать его через babel

  • @user-yx4ov2xx8s
    @user-yx4ov2xx8s Před 4 lety

    👍👍👍

  • @user-mx6ts8xi4m
    @user-mx6ts8xi4m Před 3 lety

    спас меня

  • @FillPower
    @FillPower Před 5 lety

    Set & Map Weak Map, примеры использования следующее пожалуйста)

    • @VladilenMinin
      @VladilenMinin  Před 5 lety

      Быть может отдельный плейлист по ES6?

    • @FillPower
      @FillPower Před 5 lety

      Владилен Минин, было круто, если сделали бы

  • @user-gu5ir3zs4v
    @user-gu5ir3zs4v Před 5 lety

    Так же хорошая идея на счёт парсера на node js , на Ютубе нормальных видео нет вообще, а в статьях говорят только как спарсить в самой ноде а как это уже на свою html страницу вывести нет. Тут как раз и fetch будет нужен, потому что нужно будет как то делать запрос на сервер что бы получить эти данные

    • @VladilenMinin
      @VladilenMinin  Před 5 lety

      NodeJS на сервере, там не будет fetch
      Скорее какой нибудь request

    • @user-gu5ir3zs4v
      @user-gu5ir3zs4v Před 5 lety

      @@VladilenMinin ну если допустим есть парсер на ноде и он выводит текст только в терминале, то что бы его переместить себе в html нужно поднять сервер и сделать к нему запрос(тем же fetch) ,так ведь? Нода же не имеет доступ к дому, поэтому только так. И вот такого описания парсера с нуля и до момента вывода себе в html нету вообще нигде, ни в одном русском источнике

    • @user-qs8vf5dm3c
      @user-qs8vf5dm3c Před 4 lety

      @@user-gu5ir3zs4v Все, что вы спарсите, кроме картинок, надо закидывать в базу. А дальше все работает как обычный сайт.

  • @Briz231
    @Briz231 Před 2 lety

    Малюсенький вопрос: я правильно понимаю, что работа всей страницы при наличии такого кода останавливается до того момента, пока не выполнится "виртуальный промис" в виде таймера delay? Или это просто отдельный поток где js выполняет для конкретной функции свой код и затем возвращает его? Ну, то есть, если мы присвоим переменной эту функцию, к ней можно будет обратиться только через 2 секунды, и всё это время скрипт будет недоступен?

  • @evgeniyn1542
    @evgeniyn1542 Před 5 lety

    Отличное видео, спасибо. Владилен, когда будут ваши авторские курсы на Udemy? :)

  • @user-py7nm1mu2b
    @user-py7nm1mu2b Před 5 lety +5

    Map, WeakMap, Set, WeakSet :-) а то их почему то редко используют в практике

    • @VladilenMinin
      @VladilenMinin  Před 5 lety +7

      Слушай, ну это уже к ES6 относится
      Много людей почему-то спрашивают. Может плейлист сделать?

  • @yasenclassen
    @yasenclassen Před 3 lety +8

    10:15 зачем писать await repsonse.json() если мы уже ждем fetch который запишет результат в переменную response после того как отработает, по идее await для repsonse.json() уже не нужен, или я не прав? @Владилен Минин

    • @dreawmy2912
      @dreawmy2912 Před 2 lety

      без .json() ты не получишь тело ответа

  • @dossh429
    @dossh429 Před 4 lety

    Доброго времени суток Владилен!
    Если у вас будет время, подскажите пожалуйста что такое нативная функция? Также нативность ?

  • @user-pq7dj1ny4h
    @user-pq7dj1ny4h Před 5 lety

    Спасибо, Владилен! Хорошо рассказываешь. Можешь сделать видео про Webassembly?У дотнэтчиков скоро выходит инструмент Blazor, как замена JS фреймворкам, да и в целом языку JS. Front - end они смогут писать на C#. Получится некий полноценный фулстэк из одного языка. Но насколько мне известно, им всё же придётся использовать JS для некоторых операций. Microsoft планирует в своих браузерах полностью заменить JS на webassembly (C#). Каково твоё мнение и что стоит ждать?

    • @VladilenMinin
      @VladilenMinin  Před 5 lety +1

      Пока я не очень знаком с этой темой, только слышал про нее
      На текущий момент хочу сосредоточиться на JS - уж больно много материала хочу осветить
      А дальше посмотрю, на что переходить

    • @user-pq7dj1ny4h
      @user-pq7dj1ny4h Před 5 lety

      @@VladilenMinin Тогда жду курсы или уроки про React Native и Electron.

  • @rigoremplasticsinnovates5143

    Добрый день, подскажите как дальше работать с data ? Или только внутри промиса и больше никак не вывести data в глобальную зону видимости?

  • @user-pe8kt3ze1i
    @user-pe8kt3ze1i Před rokem

    Подскажите, а зачем второй раз прописывать await? Там же вроде как уже синхронно можно response в json перевести

  • @user-he9ut9ly9j
    @user-he9ut9ly9j Před 4 lety

    Было бы оч круто освятить ещё такие темы: деструктуризация, rest, spread, каррирование, метод flat у объектов, мемоизация, полиморфы/полифиллы, monkey patching... Да много ещё чего вспомнить можно. Просто это часто на собесах спрашивают, хотя на практике многое из этого практически не используется. Но для понимания каверзи знать стоит. Впрочем, автору виднее

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +1

      Так на канале почти все вещи эти освещены в других роликах

    • @user-he9ut9ly9j
      @user-he9ut9ly9j Před 4 lety

      @@VladilenMinin а, тогда пардон) я недавно на вашем канале. Планирую пересмотреть много чего тут) p.s. смотрю на юдеми ваши курсы многие

    • @VladilenMinin
      @VladilenMinin  Před 4 lety +1

      Вливайся и добро пожаловать)

  • @ZhanOmar
    @ZhanOmar Před rokem

    Помню как мучался с созданием небольшого API на NodeJS с использованием пакетов MySQL, fs и http(s), где нужно было просто вернуть файл, перед этим найдя его в БД. Вот там меня и выбесил mysql пакет со своим коллбэком и необходимостью передавать в него request из пакета http, чтобы вернуть пользователю данные. Благо в пакете mysql2 был предусмотрен синхронный метод 😅

  • @jobbers5451
    @jobbers5451 Před 4 lety +1

    Спасибо. А подскажите как сделать, что бы асинхронная функция ретернила полученные данные, а не возвращала просим.

    • @Stamp113
      @Stamp113 Před 4 lety +1

      Функция с меткой async всегда будет возвращать промис.

    • @Stamp113
      @Stamp113 Před 4 lety +2

      Вы можете, так сказать, распаковывать возвращаемый промис в другой функции через await. Проблема в том, что новая функция тоже должна быть async.

  • @Nikita-hr6ss
    @Nikita-hr6ss Před 4 lety +1

    А как быть когда надо делать fetch запросы в цикле? Условно в коде который описал ниже, там где console.log хочу ещё помимо синхронно выполнить fetch запрос. Или вообще можно как-то более правильно чисто async await-ами всё переписать?
    let count = 0;
    function printer()
    {
    return new Promise(resolve => {
    setTimeout(()=>{
    resolve(console.log('+2 sec...'))
    }, 2000)
    });
    }
    (async _ => {
    console.log('Start')
    while (count

  • @kuzub4ik
    @kuzub4ik Před 4 lety

    а как это можно применить в цикле? К примеру при прохождении массива циклом, если данные подходят по условиям, нужно выполнить еще две функции которые делают fetch запросы и нужно чтобы была асинхронность, чтобы сперва выполнилась getFirstData() потом getSecondData() и цикл корректно отрабатывал

  • @user-yw6bj5oe9w
    @user-yw6bj5oe9w Před 3 lety

    ...можно вопрос, почему ты всегда объявляешь переменные тип CONST, есть же ещё и LET, VAR.
    Заранее.... Благодарю за ответ!