์ด๋ค ๋ฒ์ ์ ๋น๋๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
v2.5.0
(๋
ธ๋ ๋ฒ์ / ๋ธ๋ผ์ฐ์ ๋ฒ์ )์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ํ๊ฒฝ
v6.10.3
๋ญ ํ์ด?
async.auto({
returnOne: (callback) => callback(null, 1),
tryCatch: ["returnOne", (results, callback) => {
try {
assert(results.returnOne === 1);
return callback(null);
} catch (err) {
console.log(`Caught an error: ${err.message}`);
return callback(err);
}
}],
}, (err, results) => {
assert(results.returnOne !== 1);
console.log(`All Done!`);
});
๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ธฐ๋ฅผ ๊ธฐ๋ ํ์ต๋๊น?
์ต์ข
aync.auto ์ฝ๋ฐฑ ๋ด์ ์ด์ค ์
์ด ์คํจํ๊ณ ํฌ์ฐฉ๋์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ Node.js ํ๋ก์ธ์ค๊ฐ ์ค์ง๋ฉ๋๋ค. ์ด์ ๋ํ ์ค์ ์ฌ๋ก์์๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์คํจ๋ฅผ ์ผ์ผํจ ์ฃผ์ฅ์ ๋ํ ์ ๋ณด์ ํจ๊ป ํ
์คํธ๊ฐ ์คํจํ๋ค๊ณ ๋ณด๊ณ ํ๋ Mocha ๋ด์ ์ฝ๋ ๋ธ๋ก์ ํ
์คํธํ๊ณ ์์ต๋๋ค.
์ค์ ๊ฒฐ๊ณผ๋ ๋ฌด์์
๋๊น?
์ด์ ์๋ ๋จ๊ณ์ Try / Catch๊ฐ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ tryCatch ์ฝ๋ฐฑ์ ๋ ๋ฒ ํธ์ถํ์ฌ ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
async/dist/async.js:903
if (fn === null) throw new Error("Callback was already called.");
^
Error: Callback was already called.
try {
//...
return callback(null, result)
} catch (e) {
//..
return callback(e)
}
์ฝ๋ฐฑ ์ฒด์ธ (์ : ์ด์ค ์
)์์ ๋์ค์ ๋ฌด์ธ๊ฐ๊ฐ ๋์ ธ์ง๋ฉด try
๋ธ๋ก์ ๊ฑธ๋ ค catch
์์ ์ด์ค ์ฝ๋ฐฑ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ํ ์ํฐ ํจํด์
๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ :
let err, result
try {
result = doSomething()
} catch (e) {
err = e
}
callback(err, result)
@aearly ๋ง์ด ๋๋ค์, ํ ๊ฐ์ฌํฉ๋๋ค!
(๋ํ ์๋ ํ์ธ์! ๐)
๐๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฝ๋ฐฑ ์ฒด์ธ (์ : ์ด์ค ์ )์์ ๋์ค์ ๋ฌด์ธ๊ฐ๊ฐ ๋์ ธ์ง๋ฉด
try
๋ธ๋ก์ ๊ฑธ๋ คcatch
์์ ์ด์ค ์ฝ๋ฐฑ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ํ ์ํฐ ํจํด์ ๋๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ :