Connaissez-vous la limite différée et la limite de récursivité? Il y a un bon exemple ci-dessous, vous pouvez jeter un œil
fonction runasynctts (texte, discours, audiopath) {var def = jQuery.deferred (); var args = {"synthtext": text, "Voicespeecer": Speecher, "WordSpeed": "3", "usecssml": "0", "audiopath": audiopath}; tts.asynctts (json.stringify (args), fonction (err, result) {def.Resolve (result);}); return def.promise (); } fonction textTospeEchBat (metajson, speecher, audiopath) {var def = $ .deferred (); var result = {originalwords: "", resultJsonarr: []}; var json = ""; pour (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'] + '", "voixpeecer": "' + speecer + '", "wordpeed": "3", "usecssml": "0", "audiopath": "+ audiofile +'"} ''; json + = args + "|"; } json = jsons.substr (0, jsons.length-1); tts.asynctTSbat (json, fonction (err, ret) {result ['resultJsonarr'] = ret.split ('|'); def.Resolve (result);}); return def.promise (); } Fonction TextTospeechWithTryTimes (Metajson, Speecher, Audiopath, Times) {var Def = $ .deferred (); var ttsret = null; var ttscallback = function (index) {if (index <fois) {textTospeEchBat (metajson, discours, audiopath) .done (function (ret) {console.log ("textTospeechTryTimes:" + json.strifify (ret)); ttSTRe I = 0; i <Resultjsonarr.Length; i ++) {if (resultejsonarr [i] == "") {AudioFlag = false; RETOBJ [Result '] == "") {Audioflag = false; def.Resolve (ret);}}); } if (index == Times) {console.log ("textTospeechWithTryTimes Timesover, return"); Def.Resolve (TTSRET); }}; TTSCallback (0); return def.promise (); }