我在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
的内容,如果您在同一毫秒内需要一个新的随机数,则它将生成1409074885767001
,1409074885767002
,...