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 相关文章推荐
打开新窗口关闭当前页面不弹出关闭提示js代码
Mar 18 Javascript
JS判断文本框内容改变事件的简单实例
Mar 07 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
JS实现根据文件字节数返回文件大小的方法
Aug 02 Javascript
node.js使用redis储存session的方法
Sep 26 Javascript
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
ES6 Array常用扩展的应用实例分析
Jun 26 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
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
PHP 替换模板变量实现步骤
2009/08/24 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
php根据年月获取季度的方法
2014/03/31 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
CSS常用网站布局实例
2008/04/03 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
跟老齐学Python之模块的加载
2014/10/24 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
python监控文件或目录变化
2016/06/07 Python
python并发编程之线程实例解析
2017/12/27 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
项目资料员岗位职责
2013/12/10 职场文书
简单的项目建议书模板
2014/03/12 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
学雷锋日活动总结
2015/02/06 职场文书
奖金申请报告模板
2015/05/15 职场文书