Javascript Dropzone不';不能将多个项目排队
我试图在使用对话框上载文件之前重命名文件,以获取用户对文件的输入,但当我选择多个项目时,它会给它们提供相同的名称(当选择多个项目时),或者不会对任何内容进行排队,只会对第一个文件进行排队 Dropzone配置:Javascript Dropzone不';不能将多个项目排队,javascript,jquery,promise,dropzone.js,Javascript,Jquery,Promise,Dropzone.js,我试图在使用对话框上载文件之前重命名文件,以获取用户对文件的输入,但当我选择多个项目时,它会给它们提供相同的名称(当选择多个项目时),或者不会对任何内容进行排队,只会对第一个文件进行排队 Dropzone配置: var myDropzone = new Dropzone("div#file_section", {maxFiles: 3, parallelUploads: 1, url: "assets/php/upload.php", ac
var myDropzone = new Dropzone("div#file_section", {maxFiles: 3,
parallelUploads: 1, url: "assets/php/upload.php",
accept: function (file,done) {
bumm(file.name);
async function bumm(text) {
await new Promise(function(resolve, reject) {
showtextinput(text,function (value) {
uploadname = value;
resolve();
done();
},function () {
alert('false');
reject(Error("It broke"));
});
});
}
filecount++;
console.log("bitti");
}});
myDropzone.on("sending", function(file, xhr, formData) {
/* Maybe display some more file information on your page */
formData.append('newname',uploadname);
uploadname=null;
});
myDropzone.on("success", function(file, xhr, formData) {
/* Maybe display some more file information on your page */
formData = new FormData();
});
Showtextinput函数:
function showtextinput(message, yesCallback, noCallback) {
$('#inputlabel').html(message+" isimli dosyanın ne hakkında olduğunu kısaca giriniz..");
$('#inputmodal').modal('show');
$('#inputdone').click(function() {
$('#inputmodal').modal('hide');
yesCallback($('#textinput').val());
$('#textinput').val = "";
});
}
按照您现在的方式,使用
承诺没有任何意义,因为您没有等待它newpromise
同步执行Promise中的代码,并且异步函数bumm
不会返回任何内容
我假设您需要一种队列,因此一次只显示一种模式。我建议您引入一个变量来保存各自的最后一个承诺,并用追加一个新承诺。然后()
:
然后代替bumm(file.name)代码>你是这样做的
lastPromise = lastPromise.then(function() { return bumm(file.name); });
这样,对话框将仅在最后一个对话框关闭时打开。当然,bumm()
函数必须返回承诺:
function bumm(text) {
return new Promise(function(resolve, reject) {
// ...
}
}
function bumm(text) {
return new Promise(function(resolve, reject) {
// ...
}
}