【发布时间】:2014-10-02 22:20:12
【问题描述】:
我正在并行请求 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。
Nonce 是一个常规整数。它必须随着您提出的每个请求而增加。在此处阅读更多相关信息。示例:如果您在第一个请求中将 nonce 设置为 1,则必须在第二个请求中将其设置为至少 2。您不需要从 1 开始。通常的做法是对该参数使用 unix 时间。
底层库生成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++;
但这并没有解决问题,同样的毫秒只是增加了1,但仍然相等。
【问题讨论】: