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 相关文章推荐
jQuery中live方法的重复绑定说明
Oct 21 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
JavaScript中String.prototype用法实例
May 20 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
JavaScript表单验证开发
Nov 23 Javascript
JS常用正则表达式总结【经典】
May 12 Javascript
angular 服务随记小结
May 06 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
es6函数name属性功能与用法实例分析
Apr 18 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语法速查表
2007/01/02 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
Python 深入理解yield
2008/09/06 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
python turtle 绘制太极图的实例
2019/12/18 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
医药个人求职信范文
2014/01/29 职场文书
工作迟到检讨书
2014/02/21 职场文书
班组长竞聘书
2014/03/31 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
冰雪公主观后感
2015/06/16 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
《称赞》教学反思
2016/02/17 职场文书
python双向链表实例详解
2022/05/25 Python