我想避免玩家可以非常频繁地调用server.UpdateUserInternalData。因此,我想在UserInternalData中保存最后一个server.UpdateUserInternalData调用的时间戳。
我只想更新“ PlayerData1”:newdata如果最后一个server.UpdateUserInternalData调用在当前时间(currenttimeinmilliseconds)之前至少4000毫秒。但是我不知道如果最后一次更新调用不在当前时间(currenttimeinmilliseconds)之前至少4000毫秒该怎么办。
是否可以在Function1中等待,直到(((Number(playertimestamp)+ 4000)
我怎样才能做到这一点?如何在Function1中等待?
function Function1(string newdata)
{
var issuccessful = "";
var playertimestamp = GetTimestampInternalData();
var currenttimeinmilliseconds = getServerTimestamp();
if ((Number(playertimestamp) + 4000) < Number(currenttimeinmilliseconds))
{
server.UpdateUserInternalData({
PlayFabId: currentPlayerId,
Data: {
"PlayerData1": newdata
},
Permission: UserDataPermission.Private
});
issuccessful = true;
var timestampinmilliseconds = getServerTimestamp();
CreateTimestampInternalData(timestampinmilliseconds);
}
return issuccessful;
}
function GetTimestampInternalData()
{
var resultdata = server.GetUserInternalData({PlayFabId: currentPlayerId, Keys: "InternalDataTimestamp"});
var currenttimestamp = "";
if ((resultdata.Data.hasOwnProperty("InternalDataTimestamp")) && (resultdata.Data.InternalDataTimestamp.Value != null) && (resultdata.Data.InternalDataTimestamp.Value != ""))
currenttimestamp = resultdata.Data.InternalDataTimestamp.Value;
else
currenttimestamp = 0;
return currenttimestamp;
}
function CreateTimestampInternalData(currenttime)
{
server.UpdateUserInternalData({
PlayFabId: currentPlayerId,
Data: {
"InternalDataTimestamp": currenttime.toString()
},
Permission: UserDataPermission.Private
});
}
function getServerTimestamp()
{
var now = new Date();
var time = now.getTime();
return time;
}
编辑:
如果我只想在执行下一行代码之前等待几秒钟,那么本文(将睡眠引入本机JavaScript)中的sleep(毫秒)功能对我有用。
最佳答案
例如,您可以使用lodash中的debounce
函数。
防反跳功能将您的功能延迟到X之后
自上次反跳功能以来经过的毫秒数
被调用。
用法:
_.debounce(Function1, 4000);
仅自上次经过4000毫秒后,此功能才能运行。
关于javascript - 在继续执行代码之前,我应该如何等待几毫秒?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59589572/