2012-04-04 74 views
0

我不明白爲什麼這是返回字符串/Most recent instantaneous value: ([^ ]+) /這兩個事件我只需要第一場比賽。正則表達式返回所有的出現,我只需要第一個

var http = require("http"); 

var options = { 
host: 'waterdata.usgs.gov', 
port: 80, 
path: '/ga/nwis/uv?cb_72036=on&cb_00062=on&format=gif_default&period=1&site_no=02334400' 
}; 

function extract (body, cb) { 
if(!body) 
    return; 

var matches=body.match(/Most recent instantaneous value: ([^ ]+) /); 
if(matches) 
    cb(matches[1]); 
} 

http.get(options, function(res) { 
res.setEncoding('utf8'); 
res.on('data', function (chunk) { 
    extract(chunk, function(v){ console.log(v); }); 
}); 
}).on('error', function(e) { 
console.log('problem with request: ' + e.message); 
}); 
+0

我想,有幾個是事件on'data':

您可以通過最後一部分改變來解決它。順便說一句,你可以寫'extract(chunk,console.log);' – kirilloid 2012-04-04 19:04:33

回答

0

'data'事件被多次觸發。

http.get(options, function(res) { 
    var responseText = ''; 
    res.setEncoding('utf8'); 
    res.on('data', function(chunk) { 
     responseText += chunk; 
    }); 
    res.on('end', function() { 
     extract(responseText, console.log); 
    }); 
}).on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 
相關問題