我真的很喜欢关于重构以下功能的最佳方法的一些建议。我正在做的是设置文件阅读器并在for循环中刷新几个div内容。基本上,只要我在底部警报中说“alert(sparespacetofill);”,我的代码就能完美运行。进行测试,但是当我发出警报时,我的div的内容不应该被刷新。它显然是一个问题,“reader.onload”函数在函数完成运行之前没有被调用,但我真的很困惑我应该如何以不同的方式构造它。
function setup_reader(file,number, sparespacetofill) {
var name = file.name;
var reader = new FileReader();
reader.onload = function(e) {
$('#' + sparespacetofill).children('img').attr('src',e.target.result);
if ($('#' + sparespacetofill).find("p").length <= 0 && sparespacetofill !='pic0' ) {
$('#' + sparespacetofill).append('<p id="deleteit">Delete<a></p>');
}
}
reader.readAsDataURL(file);
//alert(sparespacetofill);///ISSUE IS IN HERE IF I UNCOMMENT THIS OUT
return sparespacetofill;
}
答案 0 :(得分:0)
你可以尝试这样的Javascript setTimeout()方法,
setTimeout(return sparespacetofill, 3000) ;
//而不是这一行
alert(sparespacetofill);///ISSUE IS IN HERE IF I UNCOMMENT THIS OUT
return sparespacetofill;
答案 1 :(得分:0)
当onload事件触发时,Ajax操作是否完全完成?
如果是这样,那么当函数返回时你试图执行的任何功能,而不是在onload函数结束时执行它。在那里调用一个函数,继续使用你正在运行的任何代码。
根据需要重新组织代码,以便将其拆分为两部分:在setup_reader()之前运行并调用setup_reader()的部分,以及在onload事件触发后运行的部分。