我想要实现的是使用“previewfile”函数的返回值作为“readfiles”函数的执行指示器.但这需要在执行“image.onload”部分之后,因为我需要returnThis设置为true.
我已经在谷歌和Stackoverflow上研究了一些关于这个问题和一般回调/延迟对象的事情,但是我不能在这种情况下如何应用它.
function previewfile(file,tests,acceptedTypes,holder) {
var returnThis = false;
if (tests.filereader === true && acceptedTypes[file.type] === true) {
var reader = new FileReader();
reader.onload = function (event) {
var image = new Image();
image.onload = function() {
var testimage = new Image();
testimage.src = $(this).attr('src');
var widthOfImage = testimage.width;
var heightOfImage = testimage.height;
if (!checkImageDimensions(widthOfImage,heightOfImage)) {
// do stuff
} else {
returnThis = true;
}
};
image.src = event.target.result;
holder.appendChild(image);
};
reader.readAsDataURL(file);
} else {
// do other stuff
}
return returnThis;
}
function readfiles(files,holder,progress) {
var uploadNow = previewfile(files[0],holder);
if (uploadNow === true) {
// do stuff
}
} else {
// do other stuff
}
}
@H_404_10@
最佳答案
我会选择这样的东西
function readfiles(files,progress) {
previewfile(files[0],function(value){
if (uploadNow === true){
// do stuff
}
else {
// do other stuff
}
});
}
function previewfile(file,callback) {
...
callback(returnValue); //instead of return
}
@H_404_10@