You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 05-asynchronous-control-flow-patterns-with-promises-and-async-await/11-asyncawait-web-spider-v4/TaskQueuePC.js
+16-9
Original file line number
Diff line number
Diff line change
@@ -9,15 +9,22 @@ export class TaskQueuePC {
9
9
}
10
10
}
11
11
12
-
asyncconsumer(){
13
-
while(true){
14
-
try{
15
-
consttask=awaitthis.getNextTask()
16
-
awaittask()
17
-
}catch(err){
18
-
console.error(err)
19
-
}
20
-
}
12
+
/**
13
+
* ### async/await 문법의 사용을 없에고 프로미스만을 사용하기
14
+
* - 비동기적인 재귀가 되도록 하기
15
+
* - 재귀적 프로미스 해결의 메모리 누수 버그 없어야함
16
+
*/
17
+
consumer(){
18
+
returnnewPromise(resolve=>{
19
+
this.getNextTask()
20
+
.then(task=>task())
21
+
.catch(err=>console.error(err))
22
+
.finally(()=>{// getNextTask 와 task 가 실패하든 성공하든 이 함수는 재귀적으로 실행되어야함.
23
+
// resolve(this.consumer()) 는 무한 재귀 프로미스 해결 체인의 메모리 누수 버그를 일으킬 것임.
0 commit comments