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 相关文章推荐
用javascript实现读取txt文档的脚本
Jul 20 Javascript
jQuery之选择组件的深入解析
Jun 19 Javascript
用console.table()调试javascript
Sep 04 Javascript
jQuery实现contains方法不区分大小写的方法
Feb 13 Javascript
浅析javascript中的DOM
Mar 01 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
javascript实现列表切换效果
May 02 Javascript
AngularJS 打开新的标签页实现代码
Sep 07 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 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中与数组相关的函数
2007/03/22 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
学习vue.js计算属性
2016/12/03 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
JS作用域深度解析
2016/12/29 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
Python 中 list 的各项操作技巧
2017/04/13 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
如何编写python的daemon程序
2021/01/07 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
神农溪导游词
2015/02/11 职场文书
大学推普周活动总结
2015/05/07 职场文书
校运会加油稿大全
2015/07/22 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS