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计算页面刷新的次数
Jul 20 Javascript
javascript 页面划词搜索JS
Sep 28 Javascript
javascript语言结构小记(一)
Sep 10 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
鼠标经过显示二级菜单js特效
Aug 13 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
Bootstrap fileinput文件上传预览插件使用详解
May 16 Javascript
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 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 读取文件乱码问题
2010/02/20 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
python 快速排序代码
2009/11/23 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
django实现后台显示媒体文件
2020/04/07 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
Python的logging模块基本用法
2020/12/24 Python
小学教师的个人自我鉴定
2013/10/26 职场文书
2019思想汇报范文
2019/05/21 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers