Javascript Node.js—;需要睡眠
考虑以下场景: 在我的一个cron作业中,我请求其他人的服务,该服务只允许请求3600秒。该API类似于Javascript Node.js—;需要睡眠,javascript,node.js,request,sleep,wait,Javascript,Node.js,Request,Sleep,Wait,考虑以下场景: 在我的一个cron作业中,我请求其他人的服务,该服务只允许请求3600秒。该API类似于GetPersonForName=string。考虑到我的数据库中有几个人,我需要随时更新它们的信息,我扫描我的数据库,为所有的人打电话,并调用这个API。范例 // mongodb-in-use People.find({}, function(error, people){ people.forEach(function(person){ var uri = "ht
GetPersonForName=string
。考虑到我的数据库中有几个<代码>人<代码>,我需要随时更新它们的信息,我扫描我的数据库,为所有的人打电话,并调用这个API。范例
// mongodb-in-use
People.find({}, function(error, people){
people.forEach(function(person){
var uri = "http://example.com/GetPersonForName=" + person.name
request({
uri : uri
}, function(error, response, body){
// do some processing here
sleep(3600) // need to sleep after every request
})
})
})
我甚至不确定睡眠是否是一种理想的方法,但我需要在每次请求后等待3600秒。您可以使用
setTimeout
和递归函数来完成此操作:
People.find({}, function(error, people){
var getData = function(index) {
var person = people[index]
var uri = "http://example.com/GetPersonForName=" + person.name
request({
uri : uri
}, function(error, response, body){
// do some processing here
if (index + 1 < people.length) {
setTimeout(function() {
getData(index + 1)
}, 3600)
}
})
}
getData(0)
})
People.find({},函数(error,People){
var getData=函数(索引){
var person=人[索引]
var uri=”http://example.com/GetPersonForName=“+person.name
请求({
uri:uri
},函数(错误、响应、正文){
//在这里做一些处理
如果(索引+1<人长){
setTimeout(函数(){
getData(索引+1)
}, 3600)
}
})
}
getData(0)
})
为什么不使用setTimeout而不是sleep呢?您可能还想了解asyncjs()——不知怎的,我会在这个循环中为每个人使用setTimeout吗?请举个例子好吗?贴出一句话“你可以在这个模块中使用{sleep}”哦,好吧,这很有效。我只是对隐性函数中的超时有点犹豫,但这很清楚。谢谢