synchronize.js与express js一起使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了synchronize.js与express js一起使用相关的知识,希望对你有一定的参考价值。

我想生成0-3(包括)之间的随机数,并且不应该在例如0到3之间生成该数字。生成的数字为1,保存在数组中,然后3,保存在数组中,然后再次3,哦 - 哦它存在于数组中,因此再次生成0,保存在数组中,然后2,最后所有都保存在数组中大约1,3,0,2。但有时幸运不在我身边,函数返回随机数,然后再与数组中的数字进行比较。这是我到目前为止尝试的代码: -

  //using synchronized.js
    function f1(choices){
  sync.fiber(function(){
    var options = {     //rand for a choice
      min: 0,
      max:  3,    //choice can be from 0-3 index
      integer: true
    };
    var randomnumber=rn(options);     //random number for choice placement here
    for(var i=0;i<choices.length;i++){
      if(randomnumber==choices[i]){   //if exists, generate the number again
        console.log("rnd generated is: ",randomnumber);
        randomnumber=rn(options);
        i=0;
      }
    }
    console.log("rnd got is: ", randomnumber);
    choices[choices.length]=randomnumber;
    return randomnumber;
  }, function(err,result){
    console.log("sync index is: ",result);
  });
}

但上述解决方案无效,即我正在重复索引。我也尝试使用deasync这个解决方案: -

function randomChoiceNumber(choices){
  var flag=true;
  var count=0;
  return new Promise(function(resolve,reject){
  var options = {     //rand for a choice
    min: 0,
    max:  3,    //choice can be from 0-3 index
    integer: true
  };
  var randomnumber=rn(options);     //random number for choice placement here
  for(var i=0;i<choices.length;i++){
    if(randomnumber==choices[i]){   //if exists, generate the number again
      flag=false;
      randomnumber=rn(options);
      i=0;
      count=0;
    }else{
      count++;
    } 
  }
  while(count != choices.length && choices.length>0) {
    deasync.sleep(100);
  }
  choices[choices.length]=randomnumber;
  resolve(randomnumber);
  });
}

两个都没有工作deasync一个人去睡觉lol只生成1到2个索引。请帮助我实现我想要的东西,我坚持这件事几个小时。谢谢。

答案
function getRand(){
  var array=[0,1,2,3]
  var newArray=[];
  var times=array.length;
  for(var i=0;i<times;i++){
    var ran=~~(array.length*Math.random());
    newArray[i]=array.splice(ran,1)[0]
  }
  return newArray
}
console.log(getRand())

有很多种方法可以生成非重复数组的数组。这不是最好的方法,但是因为你使用for循环和var,所以它可以工作。

代码基本上从数组中删除一个随机元素,将删除的一个元素分配给另一个newArray,直到原始数组为空。

此外,您不应该在此处放置其他标记同步,因为您专注于远程随机生成。

以上是关于synchronize.js与express js一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将 Express.js 与 React.js 一起使用的推荐方式?

有哪些关于 Node.js 以及 Express 的书籍

将 Node.js 的 Express 与 vhost 一起使用时出现意外错误

websockets、express.js 无法建立与服务器的连接

Node.js与Express联合中间件express-fileupload使用axios实现文件上传

请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?