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 相关文章推荐
用document.documentElement取代document.body的原因分析
Nov 12 Javascript
jQuery Ajax 实例全解析
Apr 20 Javascript
JQuery给元素添加/删除节点比如select
Apr 02 Javascript
热点新闻滚动特效的js代码
Aug 17 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
Jan 19 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 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代码
2008/09/10 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
JavaScript delete操作符应用实例
2009/01/13 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
基于vue实现分页效果
2017/11/06 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python中实现控制小数点位数的方法
2019/01/24 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python中upper是做什么用的
2020/07/20 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
精彩的演讲稿开头
2014/05/08 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
学前班教学反思
2016/02/24 职场文书
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android