我正在創建簡單的上載表單(對於.zip文件),並且我想驗證zip是否包含稍後將需要的所有文件。從異步函數返回true/false以用於同步if()
所以我有一個函數isZipCorrect():
isZipCorrect = function() {
'use strict';
if (this.name.slice(-3) === 'zip') {
var fileReader = new FileReader();
var zip = new JSZip();
var shpCorrect = false;
fileReader.onload = function() {
var zip = new JSZip(this.result);
shpCorrect = zip.file(/.*?/).every(function(file) {
return (file.name.slice(-3) === 'shp' ||
file.name.slice(-3) === 'dbf' ||
file.name.slice(-3) === 'shx');
});
console.log(shpCorrect);
};
fileReader.readAsArrayBuffer(this.file);
return shpCorrect;
} else {
return true;
}
和我以前的XMLHttpRequest中使用它if(isZipCorrect())
。
我假設問題是異步函數(fileReader.onload),當整個代碼已經結束時結束操作。但我不想從fileReader.onload調用send函數,因爲對於我來說,檢查是Zip正確的必須是可選的(你應該能夠上傳其他文件,這將通過而不''解析')
所以,你需要打破它,並調用第二部分中的異步調用完成後發揮作用。看看承諾 – epascarello