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 相关文章推荐
wordpress之js库集合研究介绍
Aug 17 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
Nov 21 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
jQuery防止重复绑定事件的解决方法
May 14 Javascript
基于jQuery实现中英文切换导航条效果
Sep 18 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 Javascript
微信小程序之购物车功能
Sep 23 Javascript
JS实现多张图片预览同步上传功能
Jun 23 Javascript
微信小程序左滑删除功能开发案例详解
Nov 12 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python使用py2exe打包程序介绍
2014/11/20 Python
Python functools模块学习总结
2015/05/09 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
python hough变换检测直线的实现方法
2019/07/12 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
老师自我鉴定范文
2013/12/25 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
python中的None与NULL用法说明
2021/05/25 Python