[英]Execute function after finishes a Filestack process
我正在使用Filestack v3,我想将DOC / DOCX文件的单词数与页面数进行比较。 前提是:“每个页面有200个单词”,例如:“如果doc / docx文件有2个页面,则理论上该文件有400个单词,如果有400个或400个以上单词,则为400个单词。好的,否则错误”。
所以,我有这个:
的HTML
<html>
<body>
<button id="files">UPLOAD</button>
<textarea id="dkd"></textarea>
<div id="result"></div>
<input type="text" id="cnw">
<input type="text" id="cnp">
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://static.filestackapi.com/v3/filestack.js"></script>
</body>
</html>
我的JS代码是:
$("#files").click(function(){
var client = filestack.init('myAPI');
client.pick({
accept: ['image/jpeg','image/png','image/gif','application/pdf','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
fromSources: ['local_file_system','googledrive','gmail','facebook','dropbox','onedrive','webcam'],
lang: 'es',
maxSize: 2097152,
maxFiles: 100
}).then(function(Blobs) {
var result = JSON.parse(JSON.stringify(Blobs));
for(var i=0; i<result.filesUploaded.length; i++){
if(result.filesUploaded[i].mimetype=="application/msword" || result.filesUploaded[i].mimetype=="application/vnd.openxmlformats-officedocument.wordprocessingml.document"){
var dataFile = "https://cdn.filestackcontent.com/output=docinfo:true/"+result.filesUploaded[i].handle;
var handlee = result.filesUploaded[i].handle;
var lcconvert = "https://process.filestackapi.com/output=format:txt/"+result.filesUploaded[i].handle;
//GET NUMBER OF WORDS
$("#dkd").load(lcconvert, function(){
$.post("load2.php",{
url: $("#dkd").val()
}).success(function(response){
document.getElementById('result').innerHTML += "<input type='hidden' name='mswcount' value='"+response+"'>";
var arr = document.getElementsByName('mswcount');
var tot=0;
for(var i=0;i<arr.length;i++){
if(parseInt(arr[i].value))
tot += parseInt(arr[i].value);
}
document.getElementById('cnw').value = tot;
});
});
//GET NUMBER OF PAGES
$.post("numpage.php",{
dF: dataFile
}).success(function(response){
var numpages = $.trim(response);// number of pages
$("#cnp").val(numpages);
});//post
}//if
}//for
inspire();
});//client.pick
});//files
//COMPARISON
function inspire(){
var pag = $("#cnp").val();//pages
var pagpal = pag*200; //number of pages * 200 = number of words
var pal = $("#cnw").val();//words
console.log("Pages: "+pag);
console.log("Words: "+pal);
if(pal>=pagpal){
console.log("OK");
} else {
console.log("WRONG");
}
}
我希望名为inspire的函数与输入值进行比较,并在控制台中显示结果(页面数,单词数和最终消息),但是问题是inspire函数在Filestack进程完成之前执行,并且我希望Filestack进程先完成放置值输入,然后执行功能。
我该如何解决?
将要运行的代码放在client.pick(/**/).then()
回调中。 或使用await
/ async
等待client.pick
返回值: https : //javascript.info/async-await
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.