我正在并行请求 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 是一个常规整数。它必须随着您提出的每一个请求而增加。在这里阅读更多相关信息。示例:如果您在第一个请求中将随机数设置为 1,则必须在第二个请求中将其至少设置为 2。您不需要从 1 开始。常见的做法是使用 unix 时间作为该参数。
底层库传统方式生成nonce:
var nonce = new Date().getTime() + '' + new Date().getMilliseconds();
Problem
由于异步 API 调用,有时随机数会在同一毫秒内生成,而远程端希望它们增加。
Question
保持并行请求,有可靠地生成顺序随机数的想法吗?
我明显的尝试是:
this.nonce = new Date().getTime() + '' + new Date().getMilliseconds();
// ... on request
var nonce = this.nonce++;
但这并没有解决问题,同样的毫秒只是增加了一,但仍然相等。
(这里是 npm 模块的作者)
我通过在毫秒时间戳的末尾添加自己的计数器来解决这个问题。现在支持每毫秒最多 999 次调用因为这个功能。第一次它会生成类似的东西1409074885767000
如果您在同一毫秒内需要一个新的随机数,它将生成1409074885767001
, 1409074885767002
, ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)