节点http请求正在使用一个随机数值与API执行无序引起问题(Node http requests

2019-10-18 22:13发布

我想提出的HTTP请求,要求每个请求有一个不断增长的现时值的外部API。

我遇到的问题是,即使请求按顺序提交的,他们没有得到以(大概)弹出调用堆栈。 我使用的是请求库 。 我的助手方法的一部分是这样的:

Api.prototype.makeRequest = function(path, args, callback) {
    var self = this;
    var nonce = null;
    var options = null;

   // Create the key, signature, and nonce for API auth
   nonce = (new Date()).getTime() * 1000;
   args.key = self.key;
   args.signature = ( ... build signature ... );
   args.nonce = nonce;

   options = {
            url: path,
            method: 'POST',
            body: querystring.stringify(args)
   };

   request(options, function(err, resp, body) {
       console.log('My nonce is: ' + args.nonce);
       .
       . 
       .
   });
};

控制台日志导致现时为了不不断增加,但混乱的,即使每个请求,以便必然产生(我通过将控制台日志请求调用之前测试这一点)。 如何执行一定的顺序? 为什么是不是已经这样做了? 任何了解将不胜感激。

Answer 1:

由于Node.js的异步性质的,如果你与三个不同的现时值3个的HTTP请求,如以下

GET http://example.com/?nonce=1
GET http://example.com/?nonce=2
GET http://example.com/?nonce=3

所有这三个请求将同时发生。 而且,任何请求得到响应从服务器返回的将是第一个完成(即它的回调将运行)。

你可以纳入异步模块的功能,如async.series或async.map确保请求才能返回。



文章来源: Node http requests are executing out of order causing problems with an API using a nonce value