공부/TIL

[Vue, JS] FileReader.onload 순서대로 실행(feat. Promise)

2022. 11. 9. 14:04

input 태그로 파일 불러올 때,

불러온 파일을 file -> blob -> base64로 변환하여 DB로 넣어주려고 한다.

이때 data에 초기화해둔 item에 변환한 값을 넣어주려고 하는데 문제는 변환한 값이 .onload의 안에 있어 로딩이 끝난 후 실행되어 한발 늦게 실행된다는 것이다.

 

promise.all을 사용해보라는 글을 찾아 아래처럼 짜보았다.

 

// data에서 item 초기화
data: () => ({
  item: null
})

// ...

methods: {
fileBlob (value) {
	this.item = value
  },
test () {
	  const file = this.$refs.fileUploader.files[0] // 파일 불러오기
      const blob = new Blob([file], { type: file.type }) // blob으로 변환
      const testBlob = new Promise((resolve, reject) => {
        const reader = new FileReader()
        reader.onload = async () => { // async
          try {
            const response = await this.fileBlob(reader.result)
            resolve(response)
          } catch (err) {
            reject(err)
          }
        }
        reader.readAsDataURL(blob) // blob값으로 ReadAsDataURL
      })
      Promise.all([testBlob])
    }
  }

원하는 동작은 잘 된다.

 

참고
https://stackoverflow.com/questions/67484579/problem-with-async-await-with-filereader-in-javascript

'공부 > TIL' 카테고리의 다른 글

[모두의 네트워크] 네트워크 첫걸음, 네트워크의 기본 규칙  (0) 2023.06.17
EChart 차트 영역 별로 각각 배경 색 지정(markArea)  (0) 2023.03.17
[Vue, Bootstrap vue] b-form-select 선택된 object 그대로 가져오기  (0) 2022.09.19
[Tip] VSCode console.log 단축키 등록  (0) 2022.08.12
[TIL] d3.js text input box 삽입  (1) 2022.08.12
'공부/TIL' 카테고리의 다른 글
  • [모두의 네트워크] 네트워크 첫걸음, 네트워크의 기본 규칙
  • EChart 차트 영역 별로 각각 배경 색 지정(markArea)
  • [Vue, Bootstrap vue] b-form-select 선택된 object 그대로 가져오기
  • [Tip] VSCode console.log 단축키 등록
Ail_
Ail_
Ail_
log
Ail_
  • 분류 전체보기 (182)
    • 사설 (11)
      • 강연 (5)
      • * (3)
      • 회고 (3)
    • 공부 (161)
      • Just do it (3)
      • TIL (66)
      • Game Bootcamp (31)
      • Digital Twin Bootcamp (39)
    • 노션 (3)
    • 프로젝트 (23)
      • Game Bootcamp (1)
      • Digital Twin Bootcamp (21)
      • 경기청년 갭이어 (1)

인기 글

최근 글

태그

  • 한입 크기로 잘라 먹는 타입스크립트
  • 데이터베이스
  • 피격
  • SQL첫걸음
  • 공격
  • C#
  • 유니티 게임 개발
  • mysql 설치
  • 배포
  • 개발일지
  • 오블완
  • 티스토리챌린지
  • 부트캠프
  • 템플릿
  • 인터랙티브 웹 UX·UI
  • Do it! 자료구조와 함께 배우는 알고리즘 입문 : 파이썬 편
  • notion
  • 노션
  • 멋쟁이사자처럼
  • SQL 첫걸음
  • 유니티
  • TypeScript
  • unity
  • node.js
  • 회고
  • 대시
  • Chat
  • 개발회고
  • 이펙트
  • 플레이어

최근 댓글

전체
오늘
어제
hELLO · Designed By 정상우.
Ail_
[Vue, JS] FileReader.onload 순서대로 실행(feat. Promise)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.