2017-01-26 4 views
0

내가 HTTP 요청의 무리와 함께 발전기를 실행 co을 사용하고 있습니다 :각 해결 사이의 휴면 간격을 co?

co(function *(){ 
    // resolve multiple promises in parallel 
    var a = httpRequest(...); 
    var b = httpRequest(...); 
    var c = httpRequest(...); 
    var res = yield [a, b, c]; 
    console.log(res); 
}).catch(onerror); 

각 HTTP 요청 사이의 수면의 두 번째를 도입하는 방법이 있나요? 감사.

+0

당신이 그 (것)들을하지 병렬로 순차적으로 실행할에
시도? – hackerrdave

+0

또는 여전히 병렬로 - 각각 1 초씩 지연됩니까? – hackerrdave

+0

연속적으로, 두 번째 간격으로 하나씩 차례대로, 이상적으로. 본질적으로 나는 서버 측이 나를 미워하기를 원하지 않는다. –

답변

0

예, 가능합니다. 각각의 수율 - (약속 - 당신이 결의를 해고하거나 콜백 HttpRequest를 주문에 따라 거부) dilay 새로운 약속을 돌려 이런 식으로 너무

co(function *(){ 
var a = yield new Promise(function(resolve, reject){ 
    setTimeout(function() { 
     //rosolve or reject this promise in callback of httpRequest(); 
    }, 1000) 
}); 
var b = yield new Promise(function(resolve, reject){ 
    setTimeout(function() { 
     //rosolve or reject this promise in callback of httpRequest(); 
    }, 1000) 
}); 
var c = yield new Promise(function(resolve, reject){ 
    setTimeout(function() { 
     //rosolve or reject this promise in callback of httpRequest(); 
    }, 1000) 
}); 
var res = [a, b, c]; 
    console.log(res); 
}).catch(onerror);