์ง๋ฌธ: ๋น๋๊ธฐ์ ๋ํด ์กฐ๊ธ ์๋กญ๊ณ ๋ง์ ํ์ผ์ ๋์์ 2๊ฐ ๋ค์ด๋ก๋ํ๋ ๋ค์ ์ฝ๋๊ฐ ์์ต๋๋ค.
async.eachLimit(files, 2, async (file, callback) => {
reportStep("downloading");
console.log("async start: " + file.path);
await addFile(file.path, file.size);
console.log("async end: " + file.path);
callback();
})
reportStep("completed")
๋ฌผ๋ก async.eachLimit์ด ๊ณ์ํด์ ํจ์๋ฅผ ์คํํ๋ ๋์ "์๋ฃ"๊ฐ ๋น ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค.
๋ชจ๋ ๋ฐ๋ณต์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
nvm, ๋ฌธ์๋ฅผ ์ถฉ๋ถํ ๊ฐ๊น์ด ์ฝ์ง ์์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ฝ๋ฐฑ ๋งค๊ฐ๋ณ์๊ฐ ์์ต๋๋ค. ๋ด๊ฐ ๊ธฐ๋ค๋ฆด ์ ์๋ ์ฝ์์ผ๋ก ๋ชจ๋ ๋ง๋ฌด๋ฆฌํ์ต๋๋ค.
function download(files) {
return new Promise((resolve, reject) => {
async.eachLimit(files, 2, async (file, callback) => {
reportStep("downloading");
console.log("async start: " + file.path);
await addFile(file.path, file.size);
console.log("async end: " + file.path);
callback();
}, (error) => {
if (error){
reject(error);
} else {
resolve();
}
})
});
}
await download(files)
์ฐธ๊ณ ๋ก v3
์ํํ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ํผ๊ฐ ํ์ํ์ง ์์ต๋๋ค. eachLimit
๋ ์ต์ข
์ฝ๋ฐฑ์ ์ ๋ฌํ์ง ์์ผ๋ฉด ์ฝ์์ ๋ฐํํฉ๋๋ค.
ํ , ๋๋ async.eachLimit์ ๊ธฐ๋ค๋ฆฌ๋ ค๊ณ ์๋ํ์ง๋ง ์ด๋ค ์ด์ ๋ก ์๋ํ์ง ์์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ฌ๊ธฐ์ ๊ฒ์ํ๊ฒ ๋ ๋๊ธฐ์ ๋๋ค. ํ ๋ฒ ๋ ํด๋ด์ผ๊ฒ ๋ค์.
์ฑ๊ณตํ์ จ๋์? ๋๋ ๋๊ฐ์ ๊ฒ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ๋จ์ํ ๋ชจ๋ ๋ฐ๋ณต์ ์ฝ์์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค.