我正在尝试使用uploadFile方法从<input type="file">
HTML标记上传文件。
uploadFile承诺会解决,但是&lt; 100进度值 - 它仍在上传。所以我需要等到它完成,但在第一个承诺解决后我如何继续更新FileUploadResult?
我的示例页面为here。
function UploadFile(curform, file) {
return new Promise((resolve, reject) => {
var FileUploadResult;
var check = function () {
if (FileUploadResult.isLast) {
resolve(FileUploadResult)
} else {
console.log(FileUploadResult);
setTimeout(check, 1000);
}
};
curform.uploadFile(file).then(Result => {
FileUploadResult = Result
check();
}).catch(er => { reject(er) })
})
}
答案 0 :(得分:0)
请勿在此处使用Promise
。使用callbacks
。
正如文档中所写:
uploadFile(file, [onSuccess], [onError]) ⇒ Promise
。
答案 1 :(得分:0)
.then()
电话之外,我所做的其他事情都是承诺和uploadFile()
声明。
curForm.uploadFile(file,uploadSuccess, uploadError);
function uploadSuccess(r) {
if (r.isLast) {
curForm.newRow()
.then(() => curForm.fieldUpdate("EXTFILENAME", r.file))
.then(() => curForm.saveRow(1)) //Save and Close curForm
}
}
我认为发生的事情是,即使.isLast
达到100,上传完成时progress
布尔也没有正确更新。回调方法不会挂断,返回promise并正确设置.isLast
布尔值。
我认为从版本1.5开始就是如此(虽然我现在无法获得版本#)