gpt4 book ai didi

node.js - setTimeout 未按预期运行?

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:08 25 4
gpt4 key购买 nike

我正在使用socket.io从服务器向客户端连续发送一些数据。所以我使用setTimeout函数定期发送数据,并且 sleep 时间不是恒定的,所以我没有使用setInterval,但是setTimeout是不工作。我正在使用服务总线从我的工作角色获取一些数据,这些数据定期转发给客户端。这是我的代码:

var sleepTime;

function requestQueue() {

sleepTime = 0;

console.log("REQUEST QUEUE STARTED");

console.log("SEND to WORKER ROLE");
// send the request to worker role
var broadcastMessage = {}
broadcastMessage.Channel = "World";
broadcastMessage.BufferSize = 10;

sendMessage(socketToWorkerRole, broadcastMessage)

receivePeriodicRecordsQueue(workerRoleToSocket);
}

////

function receivePeriodicRecordsQueue(queue) {

serviceBusService.receiveQueueMessage(queue, function (error, receivedMessage) {
if (!error) {
if (receivedMessage != null) {
var messageBody = receivedMessage.body;

if (messageBody != null) {

// Lots of processing and calculating sleep time

// SET TIMEOUT
if (sleepTime != 0) {
console.log("SLEEP TIME:" + sleepTime);
setTimeout(function () { requestQueue(); }, sleepTime);
}

// sending data to client through socket
io.sockets.emit('broadcast', recordsQueue);

}

}
}
}
else {
console.log(error);
}
})

}

我基本上是一个 C# 程序员,对 JS 很陌生。如果我的 setTimeout 实现有误,请告诉我。本质上,我希望使用可变 sleep 时间定期调用 requestQueue 方法

编辑答案:

就我而言,这是一个愚蠢的问题。我使用的 sleep 时间以秒为单位,而不是毫秒。 setTimeout 需要毫秒。我已将 Scott 标记为答案,因为我认为异步模块非常有用,可以用作 setTimeout 的替代品,如果需要,还可以用于许多其他功能。

最佳答案

看来您可以从应用程序中的某些控制流中受益。

看一下异步模块。它很简单,并且无需使用 setTimeout。

https://github.com/caolan/async

关于node.js - setTimeout 未按预期运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com