Array.map에서 async, await 사용

asyncawait을 사용하는 경우에, 이미 조회한 리스트의 각 요소에 대해 추가로 조회하여 반환해야하는 경우에 대해 어떻게 처리해야할까 찾아보았다.

stack overflow에서 찾아보니 아래와 같이 Promise.allArray.map을 사용하여 처리하는 것을 보았다.

const arr = [1, 2, 3, 4, 5];

const results: number[] = await Promise.all(arr.map(async (item): Promise<number> => {
    await callAsynchronousOperation(item);
    return item + 1;
}));

동일한 방법으로 사용자의 목록을 불러온 뒤에 개별 사용자의 사진을 불러올 때 사용하니 의도한대로 동작하였다.

  @get('/users')
  async find(
    @param.query.string('filter') filter: Filter,
  ): Promise<UserInterface[]> {
    const users: User[] = await this.userRepository.find(filter);
    return await Promise.all(
      users.map(
        async (user: User): Promise<UserInterface> => {
          const picture: Picture = await this.pitureRepository.findById(
            user.pictureId,
          );
          return {
            id: user.id,
            email: user.email,
            name: user.name,
            picture: picture,
            role: user.role,
          } as UserInterface;
        },
      ),
    );
  }

SmileCat

SmileCat
How do you define yourself?

[Openlayers] Render Event 정리

## 이벤트### [Map](http://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html)| event | module | note || :--: | -- | -- || [postcompose](...… Continue reading