๐ ์ด๊ธฐ ์ฝ๋
๋ฐ๋ณต๋ฌธ์ ํตํด์ ํ์ผ์ ๋ํ ์ ๋ณด๋ฅผ formData๋ก ๋ฃ๊ณ , ๋ค๋ฅธ ํจ์ ์คํ์ ์ํด ํ์ํ ๋ณ์๊ฐ์ ์ ์ํ์ฌ ํจ์ ์คํ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์๊ฐ์ด์์ผ๋, chatFilePattern์ ๋ณ์๊ฐ์ด ๊ณ ์ ์ ์ผ๋ก ๋ค์ด๊ฐ๋ฉด์ ์๊ธด ๋ถ๋ถ์ ๋ํด์ ์์ ํ๊ณ , ์์ ํ ์ฝ๋์ ๋ํ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๋ค.
for (const file of files) {
chatFilePattern = firstNum + "" + countFileNumber++
formData.append("files", file);
formData.append("chatFileNumber", chatFilePattern);
// Base64 ์ด๋ฏธ์ง ๋ณํ
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
var base64data = reader.result;
stompSendFlag = 2;
stompSend(base64data, chatFilePattern);
}
}
๐ ๋ณ๊ฒฝ ์ฝ๋
for (const file of files) { // 1. for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ files ๋ฐฐ์ด์ ๊ฐ ํ์ผ์ ๋ํด ๋ฐ๋ณตํ๋ค.
// 2. ๊ฐ ๋ฐ๋ณต์์ ์๋ก์ด chatFilePattern ๊ฐ์ ์์ฑํ๊ณ ์ด ๊ฐ์ ํ์ผ๊ณผ ํผ ๋ฐ์ดํฐ์ ์ถ๊ฐํ๋ค.
let chatFilePattern = firstNum + "" + countFileNumber++;
formData.append("files", file);
formData.append("chatFileNumber", chatFilePattern);
console.log("chatFilePattern22222222 :::: ", chatFilePattern);
// 3. FileReader ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ํด๋น ํ์ผ์ readAsDataURL() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ๋๋ค.
const reader = new FileReader();
reader.readAsDataURL(file);
// 4. reader.onloadend ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํด๋ก์ ๋ก ๊ฐ์ธ์ ์ ์ํ๋ค.
reader.onloadend = ((currentChatFilePattern) => {
return () => { // 5. reader.onloadend ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋ก์ ํจ์๊ฐ ์คํ๋๋ค.
var base64data = reader.result;
stompSendFlag = 2;
stompSend(base64data, currentChatFilePattern);
console.log("chatFilePattern333333333 :::: ", currentChatFilePattern);
};
})(chatFilePattern);
}
// for end
- for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ files ๋ฐฐ์ด์ ๊ฐ ํ์ผ์ ๋ํด ๋ฐ๋ณตํ๋ค.
- ๊ฐ ๋ฐ๋ณต์์ ์๋ก์ด chatFilePattern ๊ฐ์ ์์ฑํ๊ณ ์ด ๊ฐ์ ํ์ผ๊ณผ ํผ ๋ฐ์ดํฐ์ ์ถ๊ฐํ๋ค.
- FileReader ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ํด๋น ํ์ผ์ readAsDataURL() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ๋๋ค.
- reader.onloadend ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํด๋ก์ ๋ก ๊ฐ์ธ์ ์ ์ํ๋ค.
- ํด๋ก์ ๋ ์ธ๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ ํจ์์ด๋ค. currentChatFilePattern ์ ์ฌ์ฉํ์ฌ ํด๋ก์ ๋ฅผ ๊ตฌ์ฑํ๋ค.
- currentChatFilePattern ์ ๋ฐ๋ณต์์์ chatFilePattern ๊ฐ์ ๋ณต์ฌํ์ฌ ํด๋ก์ ์ ๋ณด์กดํ๋ค.
- ํด๋ก์ ํจ์๋ reader.onloadend ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์คํ๋๋ค.
- reader.onloadend ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋ก์ ํจ์๊ฐ ์คํ๋๋ค.
- reader.result ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ Base64 ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- currentChatFilePattern ์ ํด๋ก์ ์ ์ํด ๋ณด์กด๋ ๊ฐ์ด๋ฏ๋ก, ํด๋น ๊ฐ์ stompSend() ํจ์์ ์ ๋ฌํ๋ค.
- stompSend() ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ์ currentChatFilePattern ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
- ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๊ณ , ์๋ก์ด chatFilePattern ๊ฐ์ ์์ฑํ์ฌ ๋ค์ ํ์ผ์ ๋ํด ๋์ผํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
ํด๋ก์ ํจ์ ์ ๋ฆฌ
JavaScript | ํด๋ก์ ํจ์
๐ ํด๋ก์ ํจ์ ํด๋ก์ ๋ ํจ์์ ํจ์๊ฐ ์ ์ธ๋ ์ดํ์ ํ๊ฒฝ์ ์กฐํฉ์ด๋ค. ํด๋ก์ ๋ฅผ ์ดํดํ๋ ค๋ฉด JS๊ฐ ์ด๋ป๊ฒ ๋ณ์์ ์ ํจ๋ฒ์๋ฅผ ์ง์ ํ๋์ง๋ฅผ ์ดํดํด์ผํ๋ค. ๐ ์ดํ์ ๋ฒ์ ์ง์ (Lexical scoping) f
mvmthyun.tistory.com