javascript Deferred和递归次数限制
2024-08-29 17:39:28
function runAsyncTTS(text,speecher,audiopath) {
var def = jQuery.Deferred();
var args = {"SynthText": text, "VoiceSpeecher": speecher, "WordSpeed": "3", "UseCSSML": "0", "AudioPath": audiopath}; tts.asyncTTS(JSON.stringify(args),function(err,result) {
def.resolve(result);
}); return def.promise();
}
function textToSpeechBat(metaJson, speecher, audioPath) {
var def = $.Deferred();
var result = {originalWords:"", resultJsonArr:[]};
var jsons="";
for(var index=0;index < metaJson.words.length;index++) {
var audioName = metaJson.words[index]['audio'];
audioName = audioName.replace('.mp3','');
var audioFile = audioPath +"/" + audioName + '.wav';
var args = '{"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);
});
return def.promise();
}
function textToSpeechWithTryTimes(metaJson, speecher, audioPath,times) {
var def = $.Deferred();
var ttsRet = null;
var ttsCallBack = function(index) {
if(index < times) {
textToSpeechBat(metaJson,speecher,audioPath).done(function (ret) {
console.log("textToSpeechWithTryTimes:"+JSON.stringify(ret));
ttsRet = ret;
var resultJsonArr = ret.resultJsonArr;
var audioFlag = true;
for(var i=0;i<resultJsonArr.length;i++) {
if(resultJsonArr[i] == "") {
audioFlag = false;
break;
}
var retObj = 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("textToSpeechWithTryTimes Fail, try again!");
ttsCallBack(++index);
}else {
console.log("textToSpeechWithTryTimes succeed,return");
def.resolve(ret);
}
});
} if(index == times) {
console.log("textToSpeechWithTryTimes timesover,return");
def.resolve(ttsRet);
}
}; ttsCallBack(0);
return def.promise();
}
最新文章
- go 常用包
- JVM 1.6 GC
- zw版【转发&#183;台湾nvp系列Delphi例程】HALCON BinThreshold
- makefile实例(3)-多个文件实例优化
- PhotoShop—剪贴蒙版
- Java反射和动态代理
- Java程序的成长之路
- 内存快照排查OOM,加密时错误方法指定provider方式错误引起的OOM
- Uva 12171 Sculpture - 离散化 + floodfill
- R语言︱画图
- Jetty入门(1-3)Eclipse集成gradle-Gretty插件或maven-jetty插件运行应用
- 痞子衡嵌入式:PCM编码与Waveform音频文件(.wav)格式详解
- iOS CALayer 绘图模糊有锯齿的解决方案
- 第17月第28天 python yield
- Asp.NET调用有道翻译API
- GDI+编程(画笔/画刷/路径/区域)
- asp.net性能优化之使用Redis缓存(入门)
- Mybatis generator 自动生成代码
- 九、创建Slave节点
- SceneBuilder 打不开 .fxml文件,只在任务栏显示
热门文章
- php获取请求的方式(get/post)
- 【NOIP 2014 DAY1 T3】飞扬的小鸟(DP)
- 基于ASP.NET的comet简单实现 http长连接,IAsyncResult
- ThinkPHP3.2.3验证码显示、刷新、校验
- JDK版本更换后编译android系统出错
- Visual Studio中一个解决方案设置多个启动项目
- LFS 中文版手册发布:如何打造自己的 Linux 发行版
- EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件
- memcached实例(enyim.com Memcached Client)
- [Buffalo]ASP.NET MVC路由映射