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将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
Javascript动态创建div的方法
Feb 09 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
基于vue 开发中出现警告问题去除方法
Jan 25 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
react项目实践之webpack-dev-serve
Sep 14 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 Javascript
Nuxt.js 数据双向绑定的实现
Feb 17 Javascript
一看就会的vuex实现登录验证(附案例)
Jan 09 Javascript
vue开发中遇到的问题总结
Apr 07 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP自动生成月历代码
2006/10/09 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
js闭包用法实例详解
2016/12/13 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
python超简单解决约瑟夫环问题
2015/05/12 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
详解Python中的文件操作
2016/08/28 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
django 自定义过滤器的实现
2019/02/26 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
会计演讲稿范文
2014/05/23 职场文书
户外宣传策划方案
2014/05/25 职场文书
村党支部书记承诺书
2014/05/29 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书