What are JavaScript PROMISES? 🤞

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 67

  • @BroCodez
    @BroCodez  10 месяцев назад +28

    // Promise = An Object that manages asynchronous operations.
    // Wrap a Promise Object around {asynchronous code}
    // "I promise to return a value"
    // PENDING -> RESOLVED or REJECTED
    // new Promise((resolve, reject) => {asynchronous code})
    // DO THESE CHORES IN ORDER
    // 1. WALK THE DOG
    // 2. CLEAN THE KITCHEN
    // 3. TAKE OUT THE TRASH
    function walkDog(){
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    const dogWalked = false;
    if(dogWalked){
    resolve("You walk the dog 🐕");
    }
    else{
    reject("You DIDN'T walk the dog");
    }
    }, 1500);
    });
    }
    function cleanKitchen(){
    return new Promise((resolve, reject) => {
    setTimeout(() => {

    const kitchenCleaned = true;
    if(kitchenCleaned){
    resolve("You clean the kitchen 🧹");
    }
    else{
    reject("You DIDN'T clean the kitchen");
    }
    }, 2500);
    });
    }
    function takeOutTrash(){
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    const trashTakenOut = true;
    if(trashTakenOut){
    resolve("You take out the trash ♻");
    }
    else{
    reject("You DIDN'T take out the trash");
    }
    }, 500);
    });
    }
    walkDog().then(value => {console.log(value); return cleanKitchen()})
    .then(value => {console.log(value); return takeOutTrash()})
    .then(value => {console.log(value); console.log("You finished all the chores!")})
    .catch(error => console.error(error));

    • @salimthedon
      @salimthedon 3 месяца назад

      Thank you bro!You made me understand promises!

  • @hamodi20091
    @hamodi20091 10 месяцев назад +35

    Finally, I understand PROMISES. Thanks

  • @maialso6096
    @maialso6096 3 месяца назад +26

    Here some questions that helped me understand the video more !
    I'm absolute beginner so don't judge
    2:40
    1) Why do we need callbacks to do these chores in order?
    I was wondering why don't we just call the functions like this..
    walkDog();
    cleanKitchen();
    takeOutTrash();
    We can't do this because the output is going to be
    >> You take out the trash
    >> You walk the dog
    >> You clean the kitchen
    So the function that takes less time is going to be executed first.
    Since we want to make sure that each chore is going to be done after the another in order we have to use callbacks since the next function It will never be called unless the function fully executes
    3:10
    2) What is Callback hell?
    is an old pattern to handle asynchronous functions
    I watched the video Callback hell , and It also answers the first question
    3) Why do we need a new arrow function to act as it our callback and not use the functions that we already have ?
    walkDog(cleanKitchen(takeOutTrash))
    I tried doing something like this , with the last function without a parameter since there is no next chore..It returned an error that the passed argument to walkDog is not a function ..and I checked the type by console.log(typeof cleanKitchen(takeOutTrash)) and it was undefined ..So this method only works for two chores maximum like this.. --> cleanKitchen(takeOutTrash) and the output will be following the order correctly
    6:33
    4) How can the function provide a value parameter ?
    one snippet of code that made me understand better is
    let prom = walkDog() // returns a promise object and store in prom
    setTimeout(() => {console.log(prom)}, 3000) /*which is going to make sure that the result of the promise is not pending , logging it without the timeout will output Promise { } which is also cool */
    the output is going to be
    >> Promise { 'You walk the dog' }
    so we are just like passing the value to then handler like the following ..
    Promise {value}.then( value=>console.log(value))
    ( searching different sites mainly FreeCodeCamp)
    our function walkDog is returning a promise object which can have there different results ..
    undefined: Initially when the state value is pending.
    value: When resolve(value) is called.
    error: When reject(error) is called.
    The .then() method should be called on the promise object to handle the value or the error of the promise.
    the parameters of then receive data from the Promise
    then(successFunc, rejectFunc) returns a promise
    If you are interested only in successful outcomes, you can just pass one argument to it.
    7:22
    5) Why returning cleanKitchen and not just calling it ?
    Because we want to return what the function returns
    so simply .. return what cleanKitchen returns
    cleanKitchen returns a promise and we want to returns that promise
    It just like storing the returned promise to const prom and then returning it like..
    const prom = cleanKitchen()
    return prom
    we need a promise since we are going to attach the handler then to it

    • @TakiBARKAT-eh8rw
      @TakiBARKAT-eh8rw 2 месяца назад +1

      thank you bro, you really helped me

    • @divyaanshuagrawal3383
      @divyaanshuagrawal3383 2 месяца назад +1

      Bro i was having the same doubt as your 3rd point! Thanks for sharing!

    • @JW-uc6md
      @JW-uc6md 2 месяца назад +1

      thanks !

  • @anonymousguy6614
    @anonymousguy6614 4 месяца назад +10

    Legend. Such a hard concept to grasp, and after watching your video and following along closely, I understand Promises now. Entertaining, imo funny, and educational video. You never disappoint me. Thank you so much. You're awesome!

  • @SaintHanappi
    @SaintHanappi 10 месяцев назад +25

    Take out the trash "is really quick" => open the window/door - throw the trash - close. 🙊 .... Thank you! Getting closer to understand. (The value in the end is a bit "confusing", but I will make some studies and samples.)

    • @BroCodez
      @BroCodez  10 месяцев назад +10

      async/await simplifies the process in the next topic

  • @gokhanozdemir8970
    @gokhanozdemir8970 7 месяцев назад +4

    Your video made promises clear in my head. Thank you for your effort.

  • @altlalit
    @altlalit 10 месяцев назад +8

    It is the best explanation ever.
    Thanks

  • @Eteen12
    @Eteen12 7 месяцев назад

    This is super helpful, last night was having trouble wrapping my head around this but this video really made it click! Thanks man!

  • @haidermansoor4760
    @haidermansoor4760 9 месяцев назад +1

    The best tutorial on promises. Thanks mannn

  • @rbsfinger
    @rbsfinger 9 месяцев назад +2

    Bro, you rock. Thanks for the video!

  • @kianaparsi8223
    @kianaparsi8223 2 дня назад

    Fantastic, finally i got it🙏🙏❤️❤️

  • @Pururin_Purin
    @Pururin_Purin 10 месяцев назад +13

    Honestly I find the "pyramid of doom" less confusing than promises

    • @pidli
      @pidli 8 месяцев назад

      😂😂😂😂 same

    • @jeremyfrias7
      @jeremyfrias7 8 месяцев назад +1

      😅 It gets easier with a lot of repetition… It was hard to wrap my head around but just going back over and over and coding along simultaneously can & will do the trick.

  • @mohantraju
    @mohantraju 7 месяцев назад

    really helpful. Thanks

  • @Granta_Omega
    @Granta_Omega 4 месяца назад +2

    2.5 seconds to clean the kitchen? Damn, that's a long time!

  • @sauzxa
    @sauzxa 2 месяца назад

    what a simple explanation after like 10 videos for that thx you bro 🙏

  • @hilmimusyafa
    @hilmimusyafa 2 месяца назад

    BRO FINALLY I UNDERSTAND AFTER 5 VIDEOS AND COURSES

  • @jktrivedi29
    @jktrivedi29 4 месяца назад

    Wow, after watching many videos finally i understood. Thanks.

  • @mintymintfresh
    @mintymintfresh Месяц назад

    awsome explanation !!

  • @s21ekosn8
    @s21ekosn8 2 месяца назад +1

    thanks

  • @engenheirodesoftware
    @engenheirodesoftware 9 месяцев назад +1

    Very good thank you.

  • @itzvaibhavkumar3029
    @itzvaibhavkumar3029 4 месяца назад

    Man i love you sm i had such a hard time understanding callbacks and promises

  • @SuperDude101
    @SuperDude101 10 месяцев назад +2

    i just searched about this tomorrow and you uploaded it today what are the odds ;)

  • @renatocorreia1805
    @renatocorreia1805 9 месяцев назад

    THE BEST EXPLANATION

  • @mzedan2
    @mzedan2 7 месяцев назад

    Thank you very much

  • @open2003
    @open2003 6 месяцев назад

    You are awesome

  • @lambo-ca
    @lambo-ca 7 месяцев назад

    I finally fully understood. Thanks man.

  • @lillianirungu8180
    @lillianirungu8180 5 месяцев назад

    Wow thanks a lot. I was struggling to understand but now I do.

  • @mr.saiprasad5840
    @mr.saiprasad5840 9 месяцев назад

    The way of your explain is Awesome #BroCodez
    Thank You

  • @rajatsachann
    @rajatsachann 6 месяцев назад

    Youre a savior man!

  • @bordercut1
    @bordercut1 4 месяца назад

    sharp.

  • @yy.u.i
    @yy.u.i 6 месяцев назад

    Thank you, it was very clear and simple.

  • @sekwayimokoena3225
    @sekwayimokoena3225 9 месяцев назад

    The best!

  • @oshadhaedirisinghe1455
    @oshadhaedirisinghe1455 4 месяца назад

    Thank you

  • @J4nlks
    @J4nlks 5 месяцев назад

    Yuuuhh, killed it mann

  • @ОлександрКанюка-ч2ъ
    @ОлександрКанюка-ч2ъ 7 месяцев назад

    Thank you, it really helped me

  • @ShaileshKumar-re6yz
    @ShaileshKumar-re6yz 6 месяцев назад +1

    Can you please explain the code you wrote inside the then() method. What does it do and why are we creating the arrow function with value parameter and how is it able to access the resolve value

    • @drewlee7435
      @drewlee7435 4 месяца назад

      When you pass the value into the resolve, that value parameter is what gets sent to the ".then()" function (as a parameter) written at the end of the file. Just how promises work

  • @Ershaad-ss3uc
    @Ershaad-ss3uc 4 месяца назад

    OO LA LA

  • @andrewchukwudumeje9413
    @andrewchukwudumeje9413 5 месяцев назад +2

    If the code is asynchronous why does the first reject prevent the other functions from being executed

    • @chomantsang3906
      @chomantsang3906 4 месяца назад +4

      Because it promises to return a value, but the next function depends on the value.

  • @beepboopitsjoop4678
    @beepboopitsjoop4678 10 месяцев назад +1

    where was this when i was banging my head against the wall learning this ;.;

    • @BroCodez
      @BroCodez  10 месяцев назад +4

      I was probably still recording it lol

  • @sedhunique
    @sedhunique 4 месяца назад +1

    So basiclly, we created async to make code run parallely,... then we found out that it caused some errors,... so we again create promises to make the async code, run sychronously 💀

    • @TragicGFuel
      @TragicGFuel 2 месяца назад +1

      No, it seems you have no fundamental understanding of how javascript runs. It's not parallel.

    • @bryanquartey-papafio7628
      @bryanquartey-papafio7628 8 дней назад

      ​@@TragicGFuel he was right at the last part tho it did make it run synchronously

    • @TragicGFuel
      @TragicGFuel 8 дней назад

      @@bryanquartey-papafio7628 no he's misunderstood event based async with truly parallel async.
      I doubt he would know the difference between concurrent and parallel

    • @bryanquartey-papafio7628
      @bryanquartey-papafio7628 8 дней назад

      @@TragicGFuel oh wait I see

  • @xXAngelmlXx
    @xXAngelmlXx 5 месяцев назад

    I understood it, but you made it a little unclear than it should have. Using .then.then.then without returning anything would've been a little clearer maybe, but there are a few other ways.

  • @user-cup_-nu4kg
    @user-cup_-nu4kg 10 месяцев назад

    Can you not method chain instead of returning the values of the promises?

  • @rustyking23able
    @rustyking23able 8 месяцев назад

    I noticed some tutorials will create a variable equally a new promise kinda like this "var p = new Promise((resolve, reject))" ... in your example you returned promises, is there a preferred way or this situational ?

  • @DamosyTheFreckle
    @DamosyTheFreckle 3 месяца назад

    Hi, why do we need the return when calling another chore?

  • @alexidino
    @alexidino 7 месяцев назад +1

    how he do this 1:50 ? This little picture ?

  • @amitpaul2361
    @amitpaul2361 Месяц назад

    What if multiple rejects come??

  • @Matheus-mr4tl
    @Matheus-mr4tl 3 месяца назад

    this is more complicated and verbose than callback hell 😅

  • @Chae_boll
    @Chae_boll 2 месяца назад

    31/8/2024
    day 1 : 12:36
    ✅✅

  • @Chae-dudu
    @Chae-dudu 2 месяца назад

    31/8/2024
    day 1: 12:36