繁体   English   中英

完成Filestack进程后执行函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM