μλ νμΈμ,
map (...)μ μ¬μ©νλ λμ iteratee ν¨μμμ λ°μν μ€λ₯λ₯Ό μ²λ¦¬νμ¬ μ 곡λ 컬λ μ μμ μμ§ μ²λ¦¬λμ§ μμ νλͺ© μλ₯Ό νμΈν μμλ λ°©λ²μ΄ μμ΅λκΉ?
map
μ (λ₯Ό) μ¬μ©νμ¬ μ¬λ¬ urlsparams λ°°μ΄μ λν΄ μ¬λ¬ λ°μ HTTP μμ² (λ
Έλ request
λΌμ΄λΈλ¬λ¦¬ μ¬μ©)μ μννκ³ μμ΅λλ€. μ΄λ¬ν μμ²μ μννλ κ³Όμ μμ νΉμ μ€λ₯κ° λ°μν μ μμ΅λλ€. μ²λ¦¬ ν μμλ λμ μλ²μμ μμ
μ€μΈ νμ¬ νλͺ©κ³Ό map
κ° μμ§ μ ννμ§ μμ λλ¨Έμ§ νλͺ©μ λ€μ μ²λ¦¬νκ³ μΆμ΅λλ€.
(μ€λ₯μμ΄) μ±κ³΅μ μΌλ‘ μμ
ν λ΄ μ»¬λ μ
μ κ° νλͺ©μ νλκ·Έλ₯Ό μ€μ ν λ€μ λ΄κ° κ΄μ¬μλ μ€λ₯κ° λ°μνλ©΄ μ μ νκ² μ²λ¦¬ ν μ ββμλμ§ κΆκΈν©λλ€. κ·Έλ° λ€μ μμ§ μ²λ¦¬λμ§ μμ νλͺ©μ λν΄ νλκ·Έκ° falseλ‘ μ€μ λ νλͺ©μμ μ λ°°μ΄μ λ§λ€κ³ μ΄ νλͺ©μ λν΄ μΆκ° map
λ₯Ό μννμ¬ μλ 맡μμ μλ μ΅μ’
μ½λ°±μ νΈμΆνλμ§ νμΈν©λλ€.
μ΄κ²μ΄ μλ―Έκ° μλμ§ νμ€νμ§ μμ§λ§ μμμ μ€λͺ ν κ²μ λ¬μ±νλ λ°©λ²μ΄ μμ΅λκΉ?
μλ νμΈμ @ parky128 , μ§λ¬Έ μ£Όμ μ κ°μ¬ν©λλ€!
iteratee
λ₯Ό reflect
λνν΄λ λ κΉμ? reflect
νμ callback
κ²°κ³Ό κ°μ²΄λ₯Ό μ λ¬νλ―λ‘ iteratee
ν¨μ μ€λ₯ μ€ νλλΌλ map
μ΄ μ’
λ£λ©λλ€. κ·Έλ° λ€μ map
μ results
κ°μ²΄λ₯Ό λ°λ³΅νκ³ μ΄λ€ κ°μ²΄μ error
μμ±μ΄ μλμ§ νμΈν λ€μ μ μ νκ² μ²λ¦¬ ν μ ββμμ΅λλ€. map
μλ Ήνμ§ μμμ μμλ νλͺ©μ λ€μ μ²λ¦¬ ν νμκ° μμ΅λλ€.
async.map(coll, async.reflect(function(val, callback) {
// your request code
}, function(err, results) {
// err will always be null now
results.forEach(function(result, i) {
if (result.error) {
// your code for handling errors
// if `coll` is an array, you could access the value that caused
// this error through `coll[i]` as `map` preserves the order for arrays
} else {
// otherwise `result.value` will contain the result of that `iteratee` call
}
});
});
κ·Έλ μ§ μμΌλ©΄ μ§λ¬Έμ λ΅νκΈ° μν΄ map
νμ array
λ°νν©λλ€. ν΄λΉ λ°°μ΄μ λ°λ³΅νκ³ μ΄λ€ κ°μ΄ undefined
μμ΅λλ€. μ€λ₯κ° λ°μνμ¬ undefined
λ₯Ό callback
μ λ¬νκ±°λ error
λ°μμ μ§ν μ€μ΄κ±°λ μμνμ§ μμ νλͺ©μ ν΄λΉν©λλ€. reflect
μ κ·Ό λ°©μμ undefined
κ° iteratee
νΈμΆμ μ ν¨ν κ²°κ³Ό μΌ μ μμΌλ―λ‘ λ μμ ν μ΅μ
undefined
μ μμ΅λλ€.
μκ°μλ΄μ΄ μ μ¬μ μΈ μ루μ
μ μ κ³΅ν΄ μ£Όμ
μ κ°μ¬ν©λλ€. μ€μ λ‘ ν¬μ°©νλ €λ νΉμ μ€λ₯ μ¬λ‘μμ iteratee
ν¨μ μ€λ₯ μ€ νλκ° λ°μνμλ§μ async.map μ΅μ’
μ½λ°±μ΄ νΈμΆλκΈ°λ₯Ό μν©λλ€.
λ¬Έμλ₯Ό 보면 iteratee μ½λ°± ν¨μμ μ€λ₯λ₯Ό μ λ¬νμ¬μ΄ μμ μ μν ν μ μμ§λ§ μ΅μ’ μ½λ°±μμ async.mapμ΄ νΈμΆ ν κ²μΈμ§, ν΄λΉ κ²°κ³Ό κ°μ²΄λ₯Ό μ¬μ©νμ¬ μλ³Έκ³Ό λΉκ΅ν μ μλμ§ κΆκΈν©λλ€. μμ§νκ³ μ²λ¦¬ ν λ¨μ κ²μ νμΈνμμμ€.
μ΄ μ€ νλκ° λ΄κ° κ΄μ¬μλ μ€λ₯ μΌμ΄μ€λ₯Ό λ°ννμλ§μ async.mapμ΄ λ€λ₯Έ μμ²μ μ²λ¦¬νλ €κ³ μλνκ³ μΆμ§ μμ΅λλ€.
μ΄ μ€ νλκ° λ΄κ° κ΄μ¬μλ μ€λ₯ μΌμ΄μ€λ₯Ό λ°ννμλ§μ async.mapμ΄ λ€λ₯Έ μμ²μ μ²λ¦¬νλ €κ³ μλνκ³ μΆμ§ μμ΅λλ€.
iteratee
κ° λΉλκΈ°μμ΄λΌκ³ κ°μ νλ©΄ async.map
λ μ΅μ’
μ½λ°±μ΄ νΈμΆ λ λ λͺ¨λ νλͺ©μ μ²λ¦¬νκΈ° μμν©λλ€. κ²°κ³Ό κ°μ²΄λ₯Ό 컬λ μ
κ³Ό λΉκ΅νμ¬ μμ§ μ²λ¦¬κ° μλ£λμ§ μμ νλͺ©μ νμΈν μ μμ§λ§ μ¬κΈ°μλ λ¬Έμ κ° μμ΅λλ€. μλ₯Ό λ€μ΄, κ²°κ³Ό κ°μ²΄κ° iteratee
s ν΄κ²°λ‘ μ
λ°μ΄νΈλλ―λ‘ λμΌν ν±μμ μ΅μ’
μ½λ°±μ΄ νΈμΆλλ―λ‘ λ κΈ°μ μΌλ‘ μνν΄μΌν©λλ€.
mapSeries
μλν΄ λ³Ό μ μμ΅λλ€. mapSeries
λ ν λ²μ νλμ μμ² λ§ μ€νν©λλ€. μ¦, νμ¬ νλͺ©μ΄ μ²λ¦¬λ₯Ό μλ£ ν λλ§ λ€μ νλͺ©μ νΈμΆν©λλ€ (λͺ¨λ νλͺ©μ ν λ²μ μμνλ κ²κ³Ό λ°λ). μ¦, μ€λ₯κ° λ°μνκ³ μ΅μ’
μ½λ°±μ΄ νΈμΆλλ©΄ iteratee
λ μ΄μ μ€νλμ§ μμ΅λλ€. κ·Έλ° λ€μ κ²°κ³Όλ₯Ό 컬λ μ
κ³Ό λΉκ΅νμ¬ μμ§ μ²λ¦¬λμ§ μμ νλͺ©μ νμΈν μ μμ΅λλ€. μ΄κ²μ μ¬μ ν ββμ½κ°μ ν΄κ²° λ°©λ²μ΄μ§λ§ async.map
μ¬μ©νλ κ²λ³΄λ€ λ μ’μ΅λλ€. νμ§λ§μ΄ μ κ·Ό λ°©μμ κ°μ₯ ν° λ¨μ μ μμ²μ΄ λ μ΄μ λ³λ ¬λ‘ μ²λ¦¬λμ§ μλλ€λ κ²μ
λλ€.
μλ₯Ό λ€μ΄ 컬λ μ μ΄ λ°°μ΄ μΈ κ²½μ°
async.mapSeries(coll, function(val, callback) {
// your iteratee function
}, function(err, results) {
if (err) {
// unprocessItems will include the item that errored.
var unprocessItems = coll.slice(results.length - 1);
// handle the unprocessedItems
}
});
ν μ’μμ, μ, iteratee ν¨μλ μμ² λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ λκ°λ http μμ²μ λ§λ€κ³ κ·Έ κ²°κ³Όλ‘ μ½λ°±νλ―λ‘ λΉλκΈ°μμ λλ€. λ°λΌμ λ°λ³΅ ν νλͺ©μ΄ 10 κ° μλ€κ³ λ§νλ©΄ 4 κ°λ μ±κ³΅νκ³ 5 λ²μ§Έλ μ€ν¨ν λ€μ μ€λ₯ λ§€κ° λ³μλ₯Ό μ¬μ©νμ¬ iteratee ν¨μμ λν μ½λ°±μ νΈμΆν©λλ€. μ΄λ async.mapμ λν μ΅μ’ μ½λ°±μ κ²°κ³Ό κ°μ²΄μ 4 κ°μ μ±κ³΅μ μΈ κ²°κ³Ό?
κ·Έλ λ€λ©΄ μ§κΈμ λͺ¨λ λ°μ μ νλ₯Ό κ±Έ μ μλ€λ μ¬μ€κ³Ό ν¨κ» μ΄ κ²μ λλ€. νμλ μ΄λ μ΄λ₯Ό λ μμ μ΄λ μ΄λ‘ λΆν νκ³ mapSeries λ΄μμ λ μμ async.mapsλ₯Ό μννμ¬ μμ²μ΄ μ μ€νλ λμ μλ²μ λν μ΄κΈ° μ μ€μ μ΅μν ν μ μμ΅λλ€.
@hargasinski- κ²°κ΅ async.reflect
μ κ·Ό λ°©μμ μ¬μ©νκ³ μ΄κ²μ λλ₯Ό μν΄ μ μλνλ©° μ€λ₯κ° λ°μν λͺ¨λ νλͺ©μ λν μμ ν κ°μμ±μ μ 곡ν©λλ€ : +1 :
κ°μ¬!
κ°μ₯ μ μ©ν λκΈ
μλ νμΈμ @ parky128 , μ§λ¬Έ μ£Όμ μ κ°μ¬ν©λλ€!
iteratee
λ₯Όreflect
λνν΄λ λ κΉμ?reflect
νμcallback
κ²°κ³Ό κ°μ²΄λ₯Ό μ λ¬νλ―λ‘iteratee
ν¨μ μ€λ₯ μ€ νλλΌλmap
μ΄ μ’ λ£λ©λλ€. κ·Έλ° λ€μmap
μresults
κ°μ²΄λ₯Ό λ°λ³΅νκ³ μ΄λ€ κ°μ²΄μerror
μμ±μ΄ μλμ§ νμΈν λ€μ μ μ νκ² μ²λ¦¬ ν μ ββμμ΅λλ€.map
μλ Ήνμ§ μμμ μμλ νλͺ©μ λ€μ μ²λ¦¬ ν νμκ° μμ΅λλ€.κ·Έλ μ§ μμΌλ©΄ μ§λ¬Έμ λ΅νκΈ° μν΄
map
νμarray
λ°νν©λλ€. ν΄λΉ λ°°μ΄μ λ°λ³΅νκ³ μ΄λ€ κ°μ΄undefined
μμ΅λλ€. μ€λ₯κ° λ°μνμ¬undefined
λ₯Όcallback
μ λ¬νκ±°λerror
λ°μμ μ§ν μ€μ΄κ±°λ μμνμ§ μμ νλͺ©μ ν΄λΉν©λλ€.reflect
μ κ·Ό λ°©μμundefined
κ°iteratee
νΈμΆμ μ ν¨ν κ²°κ³Ό μΌ μ μμΌλ―λ‘ λ μμ ν μ΅μ undefined
μ μμ΅λλ€.