オブジェクトを個々の HTTP リクエストのキューに入れ、Request
.NET を使用して 1 つずつ処理しましたprocess.nextTick
。ただし、解決方法がわからないというエラーが表示されます。
node.js:244
callback();
^
TypeError: undefined is not a function
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
何が間違っているのかわかりません。該当クラスはこちら。
var Request = function() {
return this;
};
Request.prototype = {
queue_: []
};
Request.prototype.send = function(url, done) {
this.queue_.push(new QueueableRequest(url, done));
this.processRequest_();
}
Request.prototype.processRequest_ = function() {
if (this.queue_.length > 0) {
var request = this.queue_.shift();
var data = '';
http.get(request.url_, function(res) {
res.setEncoding('utf8');
res.on('data', function(chunk) {
data += chunk;
}).on('end', function() {
request.callback_(null, JSON.parse(data));
process.nextTick(this.processRequest_);
}).on('error', function(err) {
request.callback_(err, null);
process.nextTick(this.processRequest_);
});
});
}
}
もう 1 つの質問は、これが HTTP 要求を遅くする良い方法であるかどうかです。私がやろうとしているのはこれです...スレッドのリスト(約15〜20)のHTTPリクエストを作成し、スレッドごとに別のリクエストを作成して応答を取得します。返信内で、深くネストされた返信に対して別のリクエストを行う必要がある場合があります。私の最初の解決策はhttp.get
、すべてのリクエストに対して単純に呼び出すことでしたがnode.js
、いくつかのリクエストの後に応答が停止し、サーバーを再起動してページを更新し続ける必要があることがわかりました。一度に送信するリクエストが多すぎるのではないかと考えたので、このキューを実装しようとしました。