昨天在做项目时碰到一个问题,这个需求是需要一次性插入数据库1万条数据,并用回调函数返回插入的数据,然后在前台生成二维码。我插入数据库1万条数据用了2秒不到,速度很快。但是前台打印二维码我用的是JS的QRcode插件,这个插件每次生成二维码都要重新实例化QRcode对象,速度特别慢,我生成5000个二维码用了7分钟.....请问JS大神,这个如何优化?
function butt() {
$("#hidden").hide();
$('#printing').css("display",'');
var goods_id = $('#sele').find("option:selected").val();//产品id
var goods_num = $('#num').val();//产品数量
$.ajax({
url: "{:url('roots/tracecode/makeTraceCode')}",
type: 'post',
data: {
'goods_id': goods_id,
'goods_num': goods_num
},
success: function (data) {//回调的1万条数据,每条的格式为32位的字符串
var res = JSON.parse(data);
for (var index in res) {
new QRCode(document.getElementById("qrcode"), res[index]['t_code']);
//慢就慢在这里
}
},
error: function (err) {
console.log('错误');
}
});
}
慢就慢在代码中的for in循环上了,我还考虑用php自己的phpqrcode类,但是如果用这个类的话,是从后台生成好后传给前台图片的路径,那样就得把图片保存到服务器上。一次打印1万个的话,服务器项目文件就会很大吧...
求大佬指点....如何优化速度?
不每次实例化新对象,每次使用qrcode.makeCode()这个函数试试会不会效率有所提升