我在parrallel中请求Bitstamp API:

// Simplified version

var async = require('async');
var bitstamp = require('bitstamp');

async.parallel([
    bitstamp.balance,
    bitstamp.ticker
    // ...
],
function() (err, result) {
    // process results
});

这两种方法会将已签名的请求发送到Bitstamp API,包括 nonce



底层库生成随机数的传统方式:
var nonce = new Date().getTime() + '' + new Date().getMilliseconds();

问题

由于异步API调用,有时nonce产生的毫秒数非常相同,而远程端希望它们增加。

问题

保持并行请求,有什么想法可以可靠地生成连续的随机数?

我明显的尝试:
this.nonce = new Date().getTime() + '' + new Date().getMilliseconds();
// ... on request
var nonce = this.nonce++;

但这并不能解决问题,同一毫秒仅增加了一个毫秒,但仍然相等。

最佳答案

(此处为npm模块的作者)

我通过在ms时间戳的末尾添加自己的计数器来解决此问题。现在,每个ms because of this function最多支持999个调用。第一次它将生成类似1409074885767000的内容,如果您在同一毫秒内需要一个新的随机数,则它将生成14090748857670011409074885767002,...

10-06 00:06