我想避免玩家可以非常频繁地调用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/

10-12 12:19
查看更多