Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON-RPC-如何创建唯一的ID?_Javascript_Json_Api_Json Rpc - Fatal编程技术网

Javascript JSON-RPC-如何创建唯一的ID?

Javascript JSON-RPC-如何创建唯一的ID?,javascript,json,api,json-rpc,Javascript,Json,Api,Json Rpc,调用JSON-RPC服务时,从JavaScript客户端生成唯一ID的最常见方法是什么 修订问题: 通常,JavaScript JSON-RPC客户端实现一个计数id参数(例如,如果上一个请求是id=1,并且它没有收到响应,下一个请求是id=2。如果id=1的请求已经响应,下一个请求可以再次是id=1)。我感兴趣的是了解人们通常是如何实现这一点的。您没有描述需要独特的宇宙 如果你的意思是绝对独特,那么你说的是一个 如果您需要端点特有的东西来防止客户端缓存,那么这就足够了 var unique =

调用JSON-RPC服务时,从JavaScript客户端生成唯一ID的最常见方法是什么

修订问题:
通常,JavaScript JSON-RPC客户端实现一个计数
id
参数(例如,如果上一个请求是
id=1
,并且它没有收到响应,下一个请求是
id=2
。如果
id=1
的请求已经响应,下一个请求可以再次是
id=1
)。我感兴趣的是了解人们通常是如何实现这一点的。

您没有描述需要独特的宇宙

如果你的意思是绝对独特,那么你说的是一个

如果您需要端点特有的东西来防止客户端缓存,那么这就足够了

var unique = new Date().getTime();
如果你需要的不是这两个,那么你需要更具体

编辑 也许有点像这样

jsonRpcClient = function()
{
  var requestStack = [null];

  this.makeRequest = function()
  {
    var id = this.getAvailableSlot();
    requestStack[id] = new this.request( id, arguments );
  }

  this.getAvailableSlot: function ()
  {
    for ( var i = 0; i < requestStack.length: i++ )
    {
      if ( null == this.requestStack[i] )
      {
        return i;
      }
    }
    return i;
  }

  this.request: function( id, args )
  {
    // request stuff here
    // pass id and whatever else to jsonRpcClient.handleResponse()
  }

  this.handleResponse: function( id )
  {
    var request = requestStack[id];
    requestStack[id] = null;

    // Do whatever with request
  }
};
jsonRpcClient=function()
{
var requestStack=[null];
this.makeRequest=函数()
{
var id=this.getAvailableSlot();
requestStack[id]=新的this.request(id,参数);
}
this.getAvailableSlot:函数()
{
for(var i=0;i
这仅用于客户端(浏览器)将请求与响应(异步请求)进行匹配。这并不是说它必须像UUID或者甚至是当前时间一样唯一。事实上,它几乎总是
1
。它通常以
1
开始,然后是
2
等等,除非在发送另一个请求之前返回
1
(即,非异步)。在这种情况下,id总是
1
。我或多或少有兴趣了解大多数人是如何实现这一点的。我很抱歉这个措词不好的问题。听起来你需要的只是一个“下一个可用插槽”类型的堆栈,其中数组元素的索引将是你的ID。