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 相关文章推荐
jquery 上下滚动广告
Jun 17 Javascript
限制文本框输入N个字符的js代码
May 13 Javascript
Extjs NumberField后面加单位实现思路
Jul 30 Javascript
js替代copy(示例代码)
Nov 27 Javascript
JavaScript中实现Map的示例代码
Sep 09 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 Javascript
VueCli3构建TS项目的方法步骤
Nov 07 Javascript
详解React中合并单元格的正确写法
Jan 08 Javascript
解决layer.confirm选择完之后消息框不消失的问题
Sep 16 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
Javascript原型链及instanceof原理详解
May 25 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获取网络上文件
2006/10/09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
javascript 函数调用规则
2009/08/26 Javascript
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
从0搭建vue-cli4脚手架
2020/06/17 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
Python实现购物车购物小程序
2018/04/18 Python
Python对切片命名的实现方法
2018/10/16 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
教师节商场活动方案
2014/02/13 职场文书
安全宣传标语
2014/06/10 职场文书
关于环保的活动方案
2014/08/25 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
详解Python牛顿插值法
2021/05/11 Python
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python