我想找到一种方法来引入请求之间的一些延迟。基本上我有一个称为likePhotos的异步方法,它迭代一系列照片并为每个照片调用像Photo()。我不希望在同一时间点燃所有人,而是希望在每次致电LikePhoto之间有第二次延迟,并在完成后最终返回给主叫方。异步请求之间的JS人工延迟
async likePhotos(photos) {
// Run the function over all photos
var likes = photos.map(function(p, index, photos){
this.likePhoto(p);
}, this);
return Promise.all(likes);
}
likePhoto(p) {
let { token } = this.state;
return new Promise(function(resolve, reject) {
Http
.post('/api/photos/' + p.id + '/likes', {}, { Authorization: 'Bearer ' + token })
.then((response) => {
console.log("YEAH");
resolve();
})
.catch((error) => {
console.log("Failed to like photo: " + p.id);
reject(error.message);
})
});
}
setTimeout似乎不太适合这里的法案。我是一个JS noob所以任何建议将不胜感激!
如果你想限制请求到likePhoto我不知道它是否值得在那里实施节流以避免在这里处理它。无论是使用队列和'setInterval'还是'setTimeout'都可能为你简化一些事情。如果需要,您还可以提供参数/选项以跳过队列。你实施节流的地方在很大程度上取决于你的要求,因为我意识到我的评论可能与下面guest271314的答案相矛盾。 – Brian
我以前的评论指的是对答案的评论,而不是答案本身 - 抱歉,我的评论对这个答案有点混乱。 – Brian