zl程序教程

您现在的位置是:首页 >  后端

当前栏目

javascriptDeferred和递归次数限制实例

实例递归 限制 次数
2023-06-13 09:15:29 时间

你知道Deferred和递归次数限制吗?下面有个不错的实例,大家可以看看

functionrunAsyncTTS(text,speecher,audiopath){
vardef=jQuery.Deferred();
varargs={"SynthText":text,"VoiceSpeecher":speecher,"WordSpeed":"3","UseCSSML":"0","AudioPath":audiopath};

tts.asyncTTS(JSON.stringify(args),function(err,result){
def.resolve(result);
});

returndef.promise();
}
functiontextToSpeechBat(metaJson,speecher,audioPath){
vardef=$.Deferred();
varresult={originalWords:"",resultJsonArr:[]};
varjsons="";
for(varindex=0;index<metaJson.words.length;index++){
varaudioName=metaJson.words[index]["audio"];
audioName=audioName.replace(".mp3","");
varaudioFile=audioPath+"/"+audioName+".wav";
varargs="{"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);
});
returndef.promise();
}
functiontextToSpeechWithTryTimes(metaJson,speecher,audioPath,times){
vardef=$.Deferred();
varttsRet=null;
varttsCallBack=function(index){
if(index<times){
textToSpeechBat(metaJson,speecher,audioPath).done(function(ret){
console.log("textToSpeechWithTryTimes:"+JSON.stringify(ret));
ttsRet=ret;
varresultJsonArr=ret.resultJsonArr;
varaudioFlag=true;
for(vari=0;i<resultJsonArr.length;i++){
if(resultJsonArr[i]==""){
audioFlag=false;
break;
}
varretObj=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("textToSpeechWithTryTimesFail,tryagain!");
ttsCallBack(++index);
}else{
console.log("textToSpeechWithTryTimessucceed,return");
def.resolve(ret);
}
});
}

if(index==times){
console.log("textToSpeechWithTryTimestimesover,return");
def.resolve(ttsRet);
}
};

ttsCallBack(0);
returndef.promise();
}