Kennen Sie die aufgeschobene und die Rekursionsgrenze? Im Folgenden gibt es ein gutes Beispiel: Sie können einen Blick darauf werfen
Funktion RunaSynctts (Text, Sprach, Audiopath) {var def = jQuery.Deferred (); var args = {"synthText": text, "voicespeecer": realer, "WordSpeed": "3", "usecssml": "0", "audiopath": audiopath}; tts.asynctts (json.stringify (args), function (err, result) {def.resolve (result);}); return def.Promise (); } Funktion textTospeechbat (metajson, realer, audiopath) {var def = $ .deferred (); var result = {Originalwörter: "", resultjsonarr: []}; var jsons = ""; für (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']+'", "Voicespeecer": "'+speecer+'", "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 (); } Funktion textTospeechWithtrimes (Metajson, Sprach, Audiopath, Times) {var def = $ .deferred (); var ttsret = null; var ttscallback = function (index) {if (index <times) {textSospeechbat (metajson, realer, audiopath) .done (function (ret) {console.log ("textospeechwithtrimes:"+json.Stringify (retsret = retsret = ret. I = 0; retobj ['Ergebnis'] == "") {audioflag = false; Def.Resolve (ret); } if (index == mal) {console.log ("textTospeechWitHtrimes Timesover, return"); Def.Resolve (ttsret); }}; ttscallback (0); return def.Promise (); }