随着时间的推移创建随机数字javascript

时间:2016-07-29 20:25:25

标签: javascript random settimeout

具有模拟服务器请求的功能

private byte[] GenerateKey()
{
    X509Certificate2 cer = new X509Certificate2();
    cer.Import("D:\\MiCertificado.cer");

    TripleDESCryptoServiceProvider desCrypto = (TripleDESCryptoServiceProvider)TripleDESCryptoServiceProvider.Create();

    byte[] results = cer.GetPublicKey();

    MD5 md5 = MD5.Create();
    int preKeyLength = results.Length;
    byte[] prekey = null;
    prekey = new byte[preKeyLength];
    Buffer.BlockCopy(results, 0, prekey, 0, results.Length);
    byte[] key = md5.ComputeHash(prekey);

    md5.Clear();
    md5 = null;

   return key;
}

val - 整数值; callback - 在一些随机延迟后执行的函数。它有一个整数参数。

我需要以下内容:通过此函数生成数字并模拟服务器超时

尝试这个

private void DecryptFile(string source, string destination, byte[] bkey )
{
    TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider();

    TDES.Mode = CipherMode.ECB;
    TDES.Padding = PaddingMode.PKCS7;
    TDES.KeySize = 192;
    TDES.BlockSize = 64;
    TDES.Key = bkey;

    FileStream fsread = new FileStream(source, FileMode.Open, FileAccess.Read);          
    ICryptoTransform desdecrypt = TDES.CreateDecryptor();
    CryptoStream cryptostreamDecr = new  CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);

    StreamWriter fsDecrypted = new StreamWriter(destination);
    fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
    fsDecrypted.Flush();
    fsDecrypted.Close();
}

但有答案:未捕获TypeError:回调不是函数 - 3秒后。 需要生成数字并在一些超时后显示它,使用顶部的功能

我不明白数学是什么意思**。randInt **(1000));

3 个答案:

答案 0 :(得分:0)

你传递了一个论点:

    var g = request(q);

到一个被定义为需要2的函数:

    function request(val, callback) {'

这意味着该函数中的callback将是未定义的,因此您的错误。也许你打算传入你之前定义的a函数。

答案 1 :(得分:0)

如果你需要使用这个功能,你似乎需要传递一个数字和一个函数(回调)

function request(val, callback) {
    setTimeout(function() {
        callback(val * val);
    }, 3000);
}
像这样

request(50, a);

这是您编写的函数,您可以将其作为第二个参数传递给request函数

var a = function randomInteger(max) {
    var rand = 0 + Math.random() * (max + 1 - 0 -1);
    rand = Math.floor(rand);
    console.log(rand);
};

在此功能中,您可以将结果打印到屏幕

答案 2 :(得分:0)

试试这个。需要在回调中调用console.log

function randInt(max) {
  var rand = Math.random() * max;
  rand = Math.floor(rand);
  return rand;
}

function request(val, callback) {
  setTimeout(function() {
    callback(val * val);
  }, randInt(1000));
}

request(20, function(result) {
  console.log(result);
});