미친듯한 promise의 활용

김민석·2021년 5월 26일
0

JS

목록 보기
4/5

Mongodb를 사용해서 데이터를 받아오면서,
너무 많은 데이터를 받아와야하는(그런 줄로만 알고 있던....ㅎ) 상황이 생겼다.

엔드포인트에서 자그마치 100번...(50개의 데이터를 보내주어야 해야하는데, 각각의 데이터를 보내줄 때, 끼워 넣어야 할 2가지 정보가 있었다.)이나.. 보내야할 일이 생겨버렸다.

이때 든 생각이

Promise.all을 이용하자

였다.

다른 코드를 보다가 new Promise(...)를 사용하는 것을 인상깊게 보았기에,
그것을 사용해보기로 했다.

  1. 정보 1과 2를 부르는 코드를 promise로 구현하고,
  2. 그것들을 Promise.all([1,2]) 하여서 동시에 요청을,
  3. 그 요청값을 토대로 promise를 리턴시켜 map 함수를 또다시 promise.all 안에 넣기

....

짜보려고 하니까 코드가 엄청 복잡해졌다.
결국에는 다른 훨~씬 효율적인 방식이 있었기에 코드를 싹 지워버렸지만
기억을 토대로 조금 써넣으려고 한다.
덕분에 promise에 대해서 조금 자신이 생겼기 때문.
(자랑스러운 코드는 아니다... 짜고나서 아직 부족하다는 것을 많이 느꼈다.)

await Promise.all(arr.map((el)=>{
	
  return new Promise((res,rej)=>{
    
  	const { id } = el
  	
    const p = new Promise((res,rej)=>{
		const result = user.findOne(id)
      	resolve(result)
    })
    
    const k = new Promise((res,rej)=>{
    	const result = park.findOne(id)
        result result
    })
    
    const x = Promise.all([p,k])

    let obj = {}
	obj.cate = x[0].cate
  	obj.loc = x[1].loc
  	resolve(obj)
  })  	
}))

0개의 댓글