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数组不,我相信上面的代码会按顺序解决。我想我很确定这一点,因为当上一个承诺实现时,会调用下一个。