2017-01-26 88 views
0

我使用co與一羣http請求的執行發電機:設置每個解決方案之間的休眠時間間隔

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

是的,你可以。每種收益 - 與dilay返回新的承諾(在承諾 - 你不得不解僱解決或拒絕acording到HttpRequest的回調)
嘗試在你想要他們依序執行,而不是在並行這種方式

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);