正则取出数据 异步执行增加到数据库,导至数据库阻塞
//循环取出正则匹配的数据
while ((result = regPage.exec(strHtml)) != null) {
if (result[3] != "提示") {
$("#tta").val($("#tta").val() + pagekid+ "---" + urlpath + result[1] + "---" + result[3] + "\n");
//异步处理增加到数据库,发生数据库阻塞
$.post("JsWebPage.aspx",
{ PageId: pagekid,
PageName: result[3],
PageUrl: urlpath + result[1],
flag: "a"
},
function(data) {
}, "text"
);
}
setTimeout("", 5000); //延时
}
因为是异步处理,循环发生的太快,来不及增加到数据库,下一次循环又开始了,所以老是让数据库发生阻塞(OPEN了很多个连接),请问这种情况怎么处理,请大虾指点,我写了一个延时都没用
[解决办法]
- JScript code
function submitData() { var arr = []; var i = 0; //循环取出正则匹配的数据 while (i++ < 10) { arr.push({ pageid: i, pagename: 'test' + i, pageurl: '' }); } //异步处理增加到数据库 postData(0); function postData(idx) { if (idx < arr.length) { $.post('jswebpage.aspx', arr[idx], function () { postData(idx + 1); }); } }}submitData();
[解决办法]
1、你说数据库阻塞你怎么知道的?
会不会是数据库连接未关闭呢?
2、你应该把要插入的数据先加到一个数组。
然后再将这个数组中的数据一次性提交,这样是不是更有效率。
[解决办法]
我一般做ajax时都是设置了一个变量判断是否正在执行ajax 如果是true就不执行 不然就传一个数组或者json给后台吧