์ด๋ด,
v3.0์ ์์ง eachSeries์ ๋ํ async/await ์ง์์ ์ ๊ณตํ์ง ์์ต๋๊น? ํ์ฌ Promise๋ฅผ ์ง์ํ๋ ๋น๋๊ธฐ ํจ์์ ๋ํ ์ ์ฒด ๋ชฉ๋ก์ด ์์ต๋๊น?
์ด ์ ๋ฐ์ดํธ์์ ์์๋๋ ์ฌํญ:
async.eachSeries(items, async (item, callback) => {
const itemStats = await someFunc(item);
callback();
});
ํ์ฌ ์ฌ์ฉ ์ค:
async.eachSeries(items, (item, callback) => {
(async () => {
const itemStats = await someFunc(item);
callback();
})();
});
๋น๋๊ธฐ๋ async
ํจ์์ ์ฝ๋ฐฑ์ ์ ๋ฌํ์ง ์์ต๋๋ค. ๊ฐ๋จํ return
!
async.eachSeries(items, async (item) => {
const itemStats = await someFunc(item);
});
์ฃ์กํฉ๋๋ค, ์ ์ง๋ฌธ์ด ์ข์ง ์์์ต๋๋ค.
callback()์ด ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
async.eachSeries(items, async (item) => {
const itemStats = await someFunc(item);
if(!itemStats) throw new Error('no stats found');
}, (err) => {
if(err) return res.status(500);
return res.status(200).json({success: true})
});
์ฝ๋ฐฑ ์์ด๋ ์๋ํ์ง ์๊ฑฐ๋?
async
/ await
์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ๊ด์ฉ์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
try {
await async.eachSeries(items, async (item) => {
const itemStats = await someFunc(item);
if(!itemStats) throw new Error('no stats found');
})
} catch (err) {
return res.status(500);
}
return res.status(200).json({success: true})
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
async
/await
์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ๊ด์ฉ์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.