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来实现动画导航效果的代码
Dec 16 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
Mar 15 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
JavaScript中的acos()方法使用详解
Jun 14 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
vue无限轮播插件代码实例
May 10 Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 Javascript
Vue路由守卫之路由独享守卫
Sep 25 Javascript
vuex管理状态仓库使用详解
Jul 29 Javascript
解决await在forEach中不起作用的问题
Feb 25 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实现文件安全下载
2006/10/09 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
jQuery调用WebService的实现代码
2011/06/19 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
在django中自定义字段Field详解
2019/12/03 Python
python批量修改文件名的示例
2020/09/27 Python
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
实习自我鉴定模板
2013/09/28 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
聘用意向书
2014/07/29 职场文书
爱心募捐通知范文
2015/04/27 职场文书
python开发制作好看的时钟效果
2022/05/02 Python
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL