2014-01-24 4 views
1

Node.js의 모듈을 찾고 있습니다.이 모듈은 배열의 각 항목에 대해 함수를 실행하지만 마지막 항목에 값이 반환 될 때까지 배열의 다음 항목 실행을 일시 중지합니다. .Node.js - 비동기 함수 찾기

일련의 요청 기능을 실행하는 async.concatSeries()가 있습니다. 이

var foo = [id,id,id]; 
function bar(){//do something then return value} 
async.concatSeries(foo, bar, function(err, result){//log result}); 

내가 배열과 같은 순서대로 모두 반환하고 싶은처럼

보인다. 도움을 주시면 감사하겠습니다.

+0

순차적으로 실행하려면 '비동기식'기능은 무엇입니까? – grebneke

+0

@grebneke, 아래 답변에 대한 설명에서 언급했듯이 순차적 인 것은 동기식과 동일하지 않습니다. 비동기 함수는 순서대로 실행될 수 있으며 시퀀스가 ​​여러 틱에 걸쳐 있기 때문에 동기식이 아닙니다. – qubyte

답변

2

이전 결과가 나타날 때까지 잠시 멈추는 경우 동기로으로 작업하고 있습니다. 그냥 Array.map()를 사용

이 순서대로 작업을 실행하는 것이 좋습니다 될 수있다, 또는 배치 그들을

가장 잘 알려진 라이브러리 async 등등 나가는 연결을 제한 시간이 있습니다

results = [1, 2, 3].map(function(element, index) { 
    return element * 2; 
}); 

// results = [2, 4, 6] 
+0

이것은 순차적으로 동기화됩니다. 기능은 동기식이 아닌 여러 틱간에 순서대로 처리 될 수 있습니다. – qubyte

+0

이것은 엄청났습니다! 도와 주셔서 감사합니다. – MonsterWimp757

1

. 또한 제한된 수의 주어진 시간에 사용되는 ids와 병렬 실행을 위해 병렬 실행을위한 async.mapasync.mapLimit을 사용할 수 있습니다

var async = require('async'); 

// Some array of data. 
var ids = [0, 1, 2, 3, 4, 5]; 

// Async function applying to one element. 
function getUser(id, callback) { 
    // A call to a datastore for example. 
    if (err) { 
     return callback(err); 
    } 

    callback(null, user); 
} 

async.mapSeries(ids, getUser, function (err, users) { 
    // You now have an error or an array of results. The array will be in the 
    // same order as the ids. 
}); 

:처럼 그것으로 코드가 보일 것이다.