javascript Deferred和递归次数限制实例


Posted in Javascript onOctober 21, 2014

你知道Deferred和递归次数限制吗?下面有个不错的实例,大家可以看看

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(); 
}
Javascript 相关文章推荐
捕获关闭窗口的脚本
Jan 10 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
全屏js头像上传插件源码高清版
Mar 29 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
纯JS实现表单验证实例
Dec 24 Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 Javascript
js使用generator函数同步执行ajax任务
Sep 05 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 #Javascript
jquery中post方法用法实例
Oct 21 #Javascript
js调试工具Console命令详解
Oct 21 #Javascript
JS中FRAME的操作问题实例分析
Oct 21 #Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
Oct 20 #Javascript
Javascript+CSS实现影像卷帘效果思路及代码
Oct 20 #Javascript
利用jquery操作Radio方法小结
Oct 20 #Javascript
You might like
各种咖啡的英文名子是什么
2021/03/03 新手入门
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
yii用户注册表单验证实例
2015/12/26 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
VUE脚手架具体使用方法
2019/05/20 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Django choices下拉列表绑定实例
2020/03/13 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
上班上网检讨书
2014/01/29 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
学校运动会通讯稿
2015/07/18 职场文书
辞职信怎么写?
2019/05/21 职场文书