Hello, Android!
Promise 본문
자바스크립트에서는 대부분의 작업이 비동기로 처리된다
작업을 요청하면서 콜백 함수를 등록하면 결과를 나중에 콜백 함수를 통해 알려준다
한가지 작업의 결과를 받은 뒤, 순차적으로 다음 작업을 진행하고자 할때 콜백 함수를 사용한다
이런 콜백 함수가 점점 쌓이고 쌓여 콜백 지옥에 빠져 이를 해결하고자 promise를 사용한다
promise는 이름 그대로 약속 이다 지금 당장 결과를 알려줄수는 없지만
나중에 처리 결과 또는 이상이 생기면 알려준다
promise함수는 호출시 new Promise를 사용하여 promise 객체를 생성하여 반환한다
콜백 함수의 매개변수로 resolve와 reject를 받는다
promise의 결과가 성공일때는 resolve 함수를 통해 전달하고
실패했을 경우에는 reject함수를 통해 전달한다
이 결과값은 promise의 than, catch에서 받게 된다
then은 성공했을때 resolve의 인자를 받게되며
catch에서는 실패했을때 reject의 인자를 받게된다
finally는 경우 성공 실패와 상관없이 어떠한 경우에도 실행이 된다
앞서 promise는 이름 그대로 당장은 아니지만, 나중에 처리 결과를 알려준다고 하였던 말 그대로
promise객체에서 작업 실행은 하되, 그 결과는 나중에 then, catch를 붙였을때 받게 된다
또한 이와같이 then에서 새로운 than, catch를 붙여서 사용할수 있다
message에서 다시 promise객체를 만들어 resolve에 그대로 받은 결과를 그대로 넘겨준다
message2에서는 message에서 받은 결과를 받아 로그에 출력한다
이때 message에서 다시 새로운 promise를 실행하지만 catch는 이미 존재하는 하나로 처리가 가능하다
lwndnjs93.tistory.com/104?category=997600
이와같이 파일 입출력처럼 콜백함수가 많이 사용될때 promise를 사용하게 되면
더욱 가독성 좋은 코드를 작성할수 있다