-
글쓴이글
-
2021년 9월 30일 22:47 #15840
frysweet참가자선생님 프로미스 스코프 관련해서 헷갈리는 부분이 있어 올립니다.
-> https://github.com/frysweet/Js_object
1.
this.Ready = new Promise 를 할당한 후, 바로 밑줄에서
Promise.resolve()
.then() 이 나오는데요 -> 여기에서의 'Promise' 가 this.Ready에 할단된 'new Promise' 랑 같은 프로미스 인가요?2.
https://github.com/frysweet/Js_object
제일 하단 줄에 보시면,
this.isReady = Module.isReady.then( () => {
안에서 onReady(); 를 실행하고 있는데요.여기서 onReady가 맥락상 제일 위쪽줄 코드에서 작성된 onReady() 가 되어야 할 것 같은데..
Module.isReady 프로미스 안에도 onReady가 들어있거든요. (Module = core.ts 의 new Core() : Core 클래스 안에도 onReady()가 선언되어 있습니다.)Module.isReady.then() 의 .then()은 Module.isReady 프로미스를 리턴하니까,
.then() 안에서 실행되는 함수는 스코프상 Module.isReady 프로미스의 onReady() 가 실행되어야 하는것인지..아니면 이 파일 (edit.ts) 의 맨위쪽줄에 작성되어 있는 onReady()가 실행되는것이 맞는지,
그렇다면 이유가 무엇인지 궁금합니다..스코프 너무 헷갈립니다...ㅠㅠ
2021년 10월 1일 09:54 #15848
codingapple키 마스터1번은 그냥 Promise.resolve() 라고 쓰면
새로운 new Promise 새로 만들고 바로 resolve() 하라는 뜻입니다 바로 then()이 실행될듯요
2번은 제일 하단에 있는 onReady()는
위에있는 let onReady 함수를 실행해줍니다
중간의 if문 걸리면 그 안에 있는 onReady를 실행해줄듯요
2021년 10월 1일 19:23 #15890
frysweet참가자답변 감사합니다.
몇가지 헷갈리는 점이 있는데요.1.
새 프로미스 스코프의 .then() 안에 맨 마지막줄에서 onReady() 를 실행시키면 그냥 resolve() 인데 그냥 실행시키는 이유가 무엇일까요?2.
제일 하단 Module.isReady.then() 의 Module.isReady 는 new Core() 에서 만들어진 프로미스이고, 그안에 선언되어 있는 onReady() 가 있는데,프로미스 체인인 .then() 에서 Module.isReady의 프로미스안의 onReady() 를 안쓰고, 제일 윗줄에 선언되어 있는 let onReady 나 if 문의 onReady()를 사용하는 이유가 무엇인가요?
2021년 10월 1일 20:50 #15894
codingapple키 마스터1번은 500ms 후에 처리되라고 setTimeout 걸어준거같은데 그럼 0.5초후에 성공판정이 될듯요?
Module.isReady.then() 안의 코드는 Module.isReady가 성공판정이 내려지면 내부 코드 실행해주세요~ 라는 뜻이기 때문에
위에 말고 저 다른 쪽에 있는 onReady() 그거랑은 상관없는듯요
2021년 10월 5일 00:00 #16090
frysweet참가자답변 감사합니다 덕분에 이해했어요 😀
프로미스가 좀 어려워서 예제들을 찾아보면서 변형하면서 공부하고 있는데요.
async 함수로 프로미스 만들어서 프로미스 체인 만들어서 성공시켰는데..보시면 getApple().then( ) 의 .then() 안에 들어있는 getBanana() 에 getApple 에서 리턴한 apple 데이터를 넘겨주지 않았음에도,
getBanana().then() 의 .then() 안에서 apple 을 잘 받아서 사용하고 있거든요.getBanana() 다음의 .then()을 getApple.then() 바깥으로 빼버리면 apple is undefined 에러 뜨구요.
그 이유가 getApple.then() 안에 들어있어야, 스코프 안에 적용받을 수 있기때문이것은 알겠는데요.
문제는 getApple.then() 안에서 처음 연결된 getBanana() 프로미스는 apple을 안받았는데도 그 다음 .then() 체이닝에서는 왜 apple 을 받을 수 있는 것인지 이유가 궁금합니다.2021년 10월 5일 10:06 #16097
codingapple키 마스터promise와 상관없이 그냥 ${apple} 이 부분에서 apple 변수를 쓰겠다고 했는데
그럼 컴퓨터는 주변 둘러보며 가장 가까운 변수를 찾습니다
가장 가까운 변수는 바깥 함수에 있는 apple 이라는 파라미터변수고 그거 가져다 씁니다 그 값은 아마 'Apple'이겠군요
-
글쓴이글
- 답변은 로그인 후 가능합니다.