ノードjsアプリケーションを書いています。request と Cheerio を使用して、一連の URL を読み込み、サイトに関する多くの情報を取得しています。取得しようとしているのはタイトルだけだとしましょう。
var urls = {"url_1", "url_2", "url_3",...,"url_n"};
for(var i=0; i<urls.length; i++)
{
getDOMTitle(urls[i],function(error,title){
if(error)
console.log("Error while getting title for " + urls[i]);
else
console.log("The title for " + urls[i] + " is " + title);
});
}
これは私の getDOMTitle メソッドがどのように見えるかです:
function getDOMTitle(urlReq,callback)
{
var request = require('request');
var cheerio = require('cheerio');
request({url:urlReq},function(error, response, doc){
var $ = cheerio.load(doc);
if(error)
{
callback(true,null);
}
else
{
$('title', 'head').each(function (i, elem) {
var title = $(this).text();
callback(false,title);
});
}
}
}
モジュールがキャッチされない例外をスローした場合、その状況をどのように処理すればよいですか? 私は以下を追加しようとしました:
process.on('uncaughtException', function (err) {
console.error(err);
console.log("Node NOT Exiting...");
callback(true,null);
});
これを行うと、送信されたヘッダーを設定できないというエラーが表示されます。プロセス エラー処理からコールバックを削除すると、そのエラーは表示されませんが、コールバックを呼び出していないと想定しているため、クライアントは長時間スピンします。
どうすればこれを解決できますか?
また、アプリケーションレベルでキャッチされていない例外をキャッチできるので、すべてのメソッドでキャッチするためにコードを複製する必要がないことをどこかで読んだことがありますが、それは可能ですか? それがあり、例外をスローしたメソッドが何らかの情報でコールバックすることが期待される場合、それはどのように達成できますか?
ありがとうございました、