GitHubでロボット ホスティングという名前のプロジェクトに取り組んでいます。私のプロジェクトの仕事は、xml 構成ファイルから指定された URL からメディアを取得することです。xml 構成ファイルには、scripts dir でわかるように、定義された形式があります。
私の問題は以下の通りです.2つの引数があります:
- Web リンクの深さを示すリスト。リスト アイテムのセレクター (css セレクター) に従って、最終的にメディアを見つけることができるメディア URL またはサブページ URL を見つけることができます。
- サブページの URL を含む arr。
以下のように単純化された例:
node_list = {..., next = {..., next= null}};
url_arr = [urls];
URL arrのすべてのアイテムを繰り返したいので、以下のようにします:
function fetch(url, node) {
if(node == null)
return ;
// here do something with http request
var req = http.get('www.google.com', function(res){
var data = '';
res.on('data', function(chunk) {
data += chunk;
}.on('end', function() {
// maybe here generate more new urls
// get another url_list
node = node.next;
fetch(url_new, node);
}
}
// here need to be run in sync
for (url in url_arr) {
fetch(url, node)
}
ご覧のとおり、非同期 http 要求を使用すると、すべてのシステム リソースを消費する必要があります。そして、私はプロセスを制御できません。では、この問題を解決するための良いアイデアはありますか? または、nodejsはそのような仕事をする適切な方法ではありませんか?