Javascript 在每次使用co解析之间设置睡眠间隔?

Javascript 在每次使用co解析之间设置睡眠间隔?,javascript,generator,co,Javascript,Generator,Co,我正在使用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); 我有没有办法在每个

我正在使用
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请求之间引入一秒钟的睡眠时间?谢谢。

是的,你可以。每次让步-用dilay返回新承诺(承诺中-您必须根据httpRequest回调触发resolve或拒绝)
这样试试

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

因此,您希望它们按顺序执行,而不是并行执行?或者仍然并行执行-只是每个延迟1秒?按顺序执行,一个接一个,间隔1秒,理想情况下。基本上,我不希望服务器端讨厌我。嗯,我不知道这里的
co
是否是正确的方法。上面的示例用于并行解决承诺。可以尝试
减少
-ing promises数组不,我相信上面的代码会按顺序解决。我想我很确定这一点,因为当上一个承诺实现时,会调用
下一个