javascript Deferred和递归次数限制实例

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

rush:js;"> 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();
}

rush:js;"> function textToSpeechBat(MetaJson,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+'","AudioPath": "'+audioFile+'"}'; jsons += args + "|"; } jsons = jsons.substr(0,jsons.length-1); tts.asyncTTSBat(jsons,ret) { result['resultJsonArr'] = ret.split('|'); def.resolve(result); }); return def.promise(); }
rush:js;"> function textToSpeechWithTryTimes(MetaJson,audioPath,times) { var def = $.Deferred(); var ttsRet = null; var ttsCallBack = function(index) { if(index < times) { textToSpeechBat(MetaJson,audioPath).done(function (ret) { console.log("textToSpeechWithTryTimes:"+JSON.stringify(ret)); ttsRet = ret; var resultJsonArr = ret.resultJsonArr; var audioFlag = true; for(var i=0;idioFlag = 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();
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...