javascript中的异步调用处理
我试图调用一个函数saveBadge(),并获取要在for循环中使用的函数的值。但每次从数组中获取值时,我都要将div标记转换为Image。但每次我得到最后一个值。如何处理异步调用javascript中的异步调用处理,javascript,jquery,asynchronous,html2canvas,Javascript,Jquery,Asynchronous,Html2canvas,我试图调用一个函数saveBadge(),并获取要在for循环中使用的函数的值。但每次从数组中获取值时,我都要将div标记转换为Image。但每次我得到最后一个值。如何处理异步调用 for(var j=0;j<anarray.length;j++) { var json=JSON.parse(anarray[j]); // adding in badge image alert(anarray[j]); va
for(var j=0;j<anarray.length;j++)
{
var json=JSON.parse(anarray[j]);
// adding in badge image
alert(anarray[j]);
var imgTem=json['regId']['image'];
var imgFin=imgTem.replace("dataimage","data:image").replace("base64",";base64,");
$("#name").text(json['regId']['fname']+" "+json['regId']['lname']); // User name
var imgTem=json['regId']['image'];
var imgFin=imgTem.replace("dataimage","data:image").replace("base64",";base64,");
$("#image").attr("src",imgFin); // User Image
$("#gender").text(json['regId']['gender']); // User Gender
//QRcode generator
var qrcode = json['badgeId']; // User QRcode
var qr = new QRious({
element: document.getElementById('qrcanvas'),
value: qrcode,
background: 'white', // background color
foreground: 'black', // foreground color
level: 'L', // Error correction level of the QR code (L, M, Q, H)
mime: 'image/jpeg', // MIME type used to render the image for the QR code
size: 120 // Size of the QR code in pixels.
});
//qr.toDataURL("jpeg"); // Generates a base64 encoded data URI for the QR code.
savebadge();
var bdgImg = localStorage.getItem("bdgImg");
var qrjson = JSON.parse(anarray[j]);
qrjson.badgeImg=bdgImg.replace("data:image","dataimage").replace(";base64,","base64");
anarray[j]=JSON.stringify(qrjson);
} // End of for-loop
toReq();
});
用于(var j=0;jSave badge之后的代码需要在onrendered中调用。这就是回调和承诺的作用。我用两个票证结束了它,这两个票证有很多关于如何处理异步请求运行代码的选项。承诺和回调是处理代码依赖于异步调用的情况的方法。
function savebadge(){
for(var j=0;j<anarray.length;j++)
{
html2canvas($("#bdg"+j+""), {
onrendered: function(canvas) {
theCanvas = canvas;
var base64img = canvas.toDataURL();
badgeimg=base64img.replace("png","jpeg");
alert($("#name").text());
//console.log("render "+badgeimg);
localStorage.setItem("bdgImg",badgeimg);
var img = $("<img>",{
"src" : badgeimg,
"alt" : "badgeimg"
});
$("#divimg").append(img);
}
});
}}