1

各リクエストのナンス値が増加し続ける必要がある外部 API に対して http リクエストを作成しています。

私が経験している問題は、リクエストが順番に送信されても​​、(おそらく) 順番にコール スタックからポップされないことです。 request ライブラリを使用しています。私のヘルパー メソッドの一部は次のようになります。

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);
       .
       . 
       .
   });
};

コンソール ログは、各リクエストが必ず順番に作成されているにもかかわらず、決して増加することのないノンスの順序になります (リクエスト コールの前にコンソール ログを配置することでこれをテストしました)。特定の注文を強制するにはどうすればよいですか? なぜまだこれを行っていないのですか?ご理解いただければ幸いです。

4

1 に答える 1

0

Node.js の非同期の性質のため、次のように 3 つの異なる nonce 値を使用して 3 つの HTTP リクエストを作成すると、

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

3 つの要求はすべて同時に発生します。サーバーから応答を取得した要求が最初に完了します (つまり、そのコールバックが実行されます)。

async.seriesasync.mapなどの async モジュールの関数を組み込んで、リクエストが順番に返されるようにすることができます。

于 2013-11-02T14:04:12.763 に答える