Til Home

2019-12-20

sync는 결괏값이 올 때까지 기다린다.

asyc는 결괏값이 안 와도 다른 작업을 실행할 수 있다.

async 예를 들자면 카드 결제하면 결제 프로세스가 다 될 때까지 기다리지 않고 다른 작업을 할 수도 있다.

sync 예시를 들면 그러나 마트 가서 현금을 내면 현금을 거슬러 줄 때 가지 아무것도 못한다.

콜백 함수는 다른 함수에 대한 인수로서 전달되는 함수로서, 나중에 “뒤로 호출”하는 기능이다. 다른 기능을 인수로 받아들이는 함수를 고차 함수라고 하는데,콜백 함수가 실행될 때의 논리를 담고 있다.

콜백은 함수 안에 함수를 전달인자로 보내고 그래서 나중에 쓸 수 있게끔 한다.

function serverRequest(query, callback){
    setTimeout(function(){
        console.log('1')
        var response = query + "full!";
        console.log('2')
        callback(response);
        console.log('3')
    },5000);
}
console.log('4')
function getResults(results){
    console.log("Response from the server: " + results);
}
console.log('5')
serverRequest("The glass is half ", getResults);
console.log('6')
// 4
// 5
// 6
// 1
// 2
// Response from the server: The glass is half full!
// 3

function serverRequest(query, callback){
    console.log('1')
    var response = query + "full!";
    console.log('2')
    callback(response);
     console.log('3')
}

console.log('4')

function getResults(results){
 console.log("Response from the server: " + results);
}
console.log('5')
serverRequest("The glass is half ", getResults);
console.log('6')
// Result in console after 5 second delay:
// Response from the server: The glass is half full!
//   4
//   5
//   1
//   2
// Response from the server: The glass is half full!
//   3
//   6

setTimeout(function(){
    console.log('1')
    },0);
console.log('2')
console.log('3')
console.log('4')
//2
//3
//4
//1

setTimeout function 또한 callback의 한 종류이다.

callback로 하면 a->b->c->d로 갈려고 하면 a(b(c(d))) 가 되므로 결국엔 콜백헬이 된다.

Promise

 let promise = new Promise(function(resolve, reject) {
    setTimeout(() => resolve("done!"), 1000);
      });
      // resolve runs the first function in .then
      promise.then(
        result => alert(result +1), // shows "done!" after 1 second
        error => alert(error +2) // doesn't run
      );
    // shows "done!1" after 1 second

그래서 나온 게 promise 이긴 한데 promise a.then(c) =>).then … 해서 길어지면 치기 힘들어진다 그래서 결국에 나온 게 Async Await

await promise1 await promise2 await promise3

reference:

https://medium.com/javascript-in-plain-english/truly-understanding-promises-in-javascript-cb31ee487860

https://medium.com/javascript-in-plain-english/async-await-javascript-5038668ec6eb

https://guide.freecodecamp.org/javascript/callback-functions/

https://javascript.info/promise-basics

https://en.wikipedia.org/wiki/Callback_(computer_programming)

https://joshua1988.github.io/web-development/javascript/promise-for-beginners/#%ED%94%84%EB%A1%9C%EB%AF%B8%EC%8A%A4-%EC%BD%94%EB%93%9C---%EA%B8%B0%EC%B4%88


Feelings

역시 코딩은 어렵네요 힘듭니다


Findings

코드들을 쉬운 것부터 해야지 배울 수 있다고 알았습니다.


Future Action Plan

쉬운 코드를 같은 것을 계속 보면서 다른 방법으로 풀어보겠습니다.


Feedback

열심히 하도록.