【 以下文字转载自 Google 讨论区 】
发信人: modico (modico), 信区: Google
标 题: gmail client code review,part 11
发信站: 水木社区 (Mon Oct 23 09:50:49 2006), 站内
是不是每次要用xmlhttp对象都是直接调用创建函数呢?不是;是不是有一个类似缓存池的管理,先预先创建一批,用时从池中取,用后归还呢?不完全是。
确实有一个池存在,也先预先创建了一批(5个),用时,如果池里还有,就从池中取,若没有,就新建一个,新建的不入池;用完不还。每次只要从池里取了,就立即尽快地补充满,保持满池状态。
var standbyXmlHttpArray/*Ym*/ = [];
function getXmlHttp/*ec*/()
{
var xmlhttp = standbyXmlHttpArray/*Ym*/.pop();
if (! xmlhttp) {
return createXmlHttp/*HE*/();
}
setTimeout(supplyXmlHttp/*KE*/, standbyXmlHttpArray/*Ym*/.length * 20);
return xmlhttp;
}
function supplyXmlHttp/*KE*/()
{
try {
while (standbyXmlHttpArray/*Ym*/.length < 5) {
standbyXmlHttpArray/*Ym*/.push(createXmlHttp/*HE*/());
}
}
catch (a) {
dumpException/*Gz*/(a);
}
}
--
FROM 218.249.84.*