await q.push(task)
λ λκΈ°μ΄ μμ
μκ° μ€λ₯λ₯Ό λμ§ κ²½μ° q.push
λ°νλ μ½μμ΄ νμΈλκ±°λ κ±°λΆλμ§ μκΈ° λλ¬Έμ νμ¬ μ¬μ©νκΈ°μ μμ νμ§ μμ΅λλ€. μ΄ λ©μλμ μ νμ μ½λ°± 맀κ°λ³μ(νΈμ λ° μμ΄λ²λ¦¬κΈ° κΈ°λ₯)μ μ΄μ λ²μ κ³Όμ νΈνμ±μΌλ‘ μΈν΄ await q.push(task)
μμ μ€λ₯λ₯Ό λ°μμν¬ μ μμμ μ΄ν΄ν©λλ€. μ½μμ κ±°λΆνλ q.asyncPush(task)
λ©μλλ μ€ν κ°λ₯νμ§ μμμΌ ν©λκΉ?
μ΄ μ½λμ λ¬Έμ λ₯Ό νμν μ μμ΅λλ€(μꡬ μμ΄ λ Έλ λλ λΈλΌμ°μ μμ).
const async = require('async');
let pushResult;
(async () => {
const q = async.queue(async (task) => {
throw new Error('Bad thing');
});
try {
pushResult = q.push({some: 'data'});
await pushResult;
console.log('Error not catched');
} catch (e) {
console.log('Error catched');
}
})();
setTimeout(() => {
console.log('exit');
console.log(pushResult);
}, 1000);
_Originallyμ @darksabrefrμ μν΄ κ²μ https://github.com/caolan/async/pull/1641#issuecomment -498191809_
q.push()
μ€λ₯ κ°μ²΄λ‘ ν΄κ²°νλ κ²μ κ³ λ €νκ³ μμ΅λλ€. κ·Έκ²μΌλ‘ μΆ©λΆν κΉμ? λλ λλ€μμ queue
μ¬μ©μμκ² unhandledRejection
λ₯Ό μ 곡νκ³ μΆμ§ μμ΅λλ€.
μ€λ₯λ‘ ν΄κ²°νλ κ²μ΄ μ΅μ
μΌ μ μμ§λ§ q.push
λ°νμ ν
μ€νΈν΄μΌ ν©λλ€. μ€μ λ‘λ μ½μλ κΈ°μ‘΄ ν¨ν΄μ΄ μλλλ€( try
/ catch
/ finally
λΈλ‘ λλ .then()
/ .catch()
λ©μλλ₯Ό μ¬μ©ν μ μμ). μ§μ κ±°λΆλ μ ν μ¬νμ΄ μλλλ€. λμν©λλ€. μ£Όμ μμ μ¬νμ
λλ€. μ μκ²λ λ κ°μ§ λ€λ₯Έ κ°λ₯μ±μ΄ μμ΅λλ€.
q.asyncPush
λ©μλμ
λλ€. νλΌλ―Έμ€μ μ½λ°± APIκ° μμ ν λΆλ¦¬λ μ μκΈ° λλ¬Έμ μλ§λ κ°μ₯ μ½κ³ λͺ
νν λ°©λ²μΌ κ²μ
λλ€.q.push
μ λ λ²μ§Έ 맀κ°λ³μλ‘ μ¬μ©νμ¬ μ½μ κ±°λΆλ₯Ό νμ±νν©λλ€.μ λ§ μ€μν κ²μ μ½μμ΄ μμν 보λ₯λμ§ μμΌλ―λ‘ μκ°νλ μ΅μμ μ΅μ μ μ νν μ μλ€λ κ²μ λλ€ ;-)
asyncPush
μμ΄λμ΄κ° λ§μμ λλλ€.
μ λ§ κ°μ¬ν©λλ€!
@aearly μ΄κ²μ΄ ꡬνλ μ μ΄ μμ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
asyncPush
μμ΄λμ΄κ° λ§μμ λλλ€.