javascript 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 Deferred和递归次数限制的更多相关文章
- python递归次数和堆栈溢出问题
在做递归的时候,测试了一下python的递归能力. 如果不设置递归次数的话,大概只能在992次左右,就会出现错误:RuntimeError: maximum recursion depth excee ...
- 【JAVA系列】使用JavaScript实现网站访问次数统计代码
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]使用JavaScript实现网站 ...
- JavaScript中的递归
译者按: 程序员应该知道递归,但是你真的知道是怎么回事么? 原文: All About Recursion, PTC, TCO and STC in JavaScript 译者: Fundebug 为 ...
- javascript 迭代与递归
<script type="text/javascript"> // //原生js // window.onload = function(){ // var btn ...
- javascript中用闭包递归遍历树状数组
做公司项目时,要求写一个方法,方法的参数为一个菜单数组集合和一个菜单id,菜单数组的格式为树状json,如下面所示: [{"id":28,"text":&quo ...
- javascript实现非递归--归并排序
另一道面试题是实现归并排序,当然,本人很不喜欢递归法,因为递归一般都是没有迭代法好.所以首选都是用迭代法,但是迭代法确实是难做啊,至底而上的思想不好把握. 这是我的实现代码 /* * * 非递归版归并 ...
- JavaScript函数之递归
递归 递归的本质就是使用函数自身来解决问题的思路. 递归的定义(摘): 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明 ...
- javascript如何用递归写一个简单的树形结构
现在有一个数据,需要你渲染出对应的列表出来: var data = [ {"id":1}, {"id":2}, {"id":3}, {&qu ...
- (网页)javascript如何用递归写一个简单的树形结构
转自博客园: 现在有一个数据,需要你渲染出对应的列表出来: var data = [ {"id":1}, {"id":2}, {"id":3 ...
随机推荐
- Android开发之通过Intent启动其他App的Service
在Android5.0以前可以通过隐式Intent方式启动其他App的Service,就跟Activity启动隐式Intent一样的. 但是在5.0以后,只能使用显示的Intent方式启动了. 启动其 ...
- Eclipse使用技巧及个性化设计
以下除特殊说明均在 Windows->Preferences里面操作 如何把Eclipse关闭提示调出来? General->Startup and Shutdown,在 Confirm ...
- addlinkedserver
http://blog.sina.com.cn/s/blog_5321db9d0100f89g.html --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ' ...
- BZOJ_1612_[Usaco2008_Jan]_Cow_Contest_奶牛的比赛_(dfs)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1612 \(n\)头奶牛比赛,给出一些胜负情况,问可以确定多少头奶牛的排名. 分析 无论胜负,只 ...
- Master Nginx(4) - Nginx as a Reverse Proxy
Introduction to reverse proxying the proxy module legacy servers with cookies the upstream module ke ...
- [HDU 1806] Frequent values
Frequent values Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- Mysql规范和使用注意点(转)
命名规范: 1表名,字段名,索引名称使用小写字母,数字采用下划线进行分割 2.表名采用模块名3个缩小字符 '前缀'之后顺序为表明 3.表名,字段名不超过32个字符 4.存储尸体数据的表,名称使用名词, ...
- Axis2 java调用.net webservice接口的问题(郑州就维)
这是一个古老的问题,古老到从我若干年前遇到这样的问题就是一个解决之道:反复尝试.其实标准是什么,标准就是一个束缚,一种按既定规则的束缚,错点点,你的调用就可能不成功,不成功后你要花费大量的力气查找原因 ...
- inno setup 打包
; -- Example1.iss -- ; Demonstrates copying files and creating an icon. ; SEE THE DOCUMENTATION FOR ...
- JZ2440开发笔记(2)——minicom的安装和配置使用【转】
一.安装配置minicom 1.安装minicom lingd@ubuntu:~$ sudo apt-get install minicom 2.配置minicom lingd@ubuntu:~$ s ...