javascriptDeferred和递归次数限制实例
2023-06-13 09:15:29 时间
你知道Deferred和递归次数限制吗?下面有个不错的实例,大家可以看看
functionrunAsyncTTS(text,speecher,audiopath){ vardef=jQuery.Deferred(); varargs={"SynthText":text,"VoiceSpeecher":speecher,"WordSpeed":"3","UseCSSML":"0","AudioPath":audiopath}; tts.asyncTTS(JSON.stringify(args),function(err,result){ def.resolve(result); }); returndef.promise(); }
functiontextToSpeechBat(metaJson,speecher,audioPath){ vardef=$.Deferred(); varresult={originalWords:"",resultJsonArr:[]}; varjsons=""; for(varindex=0;index<metaJson.words.length;index++){ varaudioName=metaJson.words[index]["audio"]; audioName=audioName.replace(".mp3",""); varaudioFile=audioPath+"/"+audioName+".wav"; varargs="{"SynthText":""+metaJson.words[index]["word"]+"","VoiceSpeecher":""+speecher+"","WordSpeed":"3","UseCSSML":"0","AudioPath":""+audioFile+""}"; jsons+=args+"|"; } jsons=jsons.substr(0,jsons.length-1); tts.asyncTTSBat(jsons,function(err,ret){ result["resultJsonArr"]=ret.split("|"); def.resolve(result); }); returndef.promise(); }
functiontextToSpeechWithTryTimes(metaJson,speecher,audioPath,times){ vardef=$.Deferred(); varttsRet=null; varttsCallBack=function(index){ if(index<times){ textToSpeechBat(metaJson,speecher,audioPath).done(function(ret){ console.log("textToSpeechWithTryTimes:"+JSON.stringify(ret)); ttsRet=ret; varresultJsonArr=ret.resultJsonArr; varaudioFlag=true; for(vari=0;i<resultJsonArr.length;i++){ if(resultJsonArr[i]==""){ audioFlag=false; break; } varretObj=JSON.parse(resultJsonArr[i]); console.log(retObj["audioFlag"]); if(retObj["audioFlag"]=="false"||retObj["result"]==""){ audioFlag=false; break; } } console.log(audioFlag); if(audioFlag==false){ console.log("textToSpeechWithTryTimesFail,tryagain!"); ttsCallBack(++index); }else{ console.log("textToSpeechWithTryTimessucceed,return"); def.resolve(ret); } }); } if(index==times){ console.log("textToSpeechWithTryTimestimesover,return"); def.resolve(ttsRet); } }; ttsCallBack(0); returndef.promise(); }
相关文章
- SpringBoot对单元测试支持、常用单元测试功能使用实例
- mongoDB 实现主从读写分离实现的实例代码
- Ansible相关工具介绍,实例演示
- Oracle实例用户:详解数据库管理中的重要概念(oracle实例用户)
- 使用MSSQL更改实例名的方法(mssql实例名)
- 部署使用SQL Server实例快速部署的技巧(sqlserver的实例)
- Redis集群中实现双主实例冗余性极大提升可用性(redis集群双主实例)
- PHP翻页实例代码
- 动态创建类实例代码
- SQLServer2008数据库镜像部署实例之三配置见证服务器
- androidListActivity显示图标实例
- 二叉树的非递归后序遍历算法实例详解
- php递归删除目录下的文件但保留的实例分享
- C++递归删除一个目录实例
- C++基于hookiat改变Messagebox实例
- C#算法之全排列递归算法实例讲解
- php采集自中央气象台范围覆盖全国的天气预报代码实例
- C++实现二叉树非递归遍历方法实例总结
- C语言的递归思想实例分析
- Lua中的函数(function)、可变参数、局部函数、尾递归优化等实例讲解