微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐