연기와 재귀 한계를 알고 있습니까? 아래에 좋은 예가 있습니다.
함수 runasynctts (텍스트, 음성, 오디오 패스) {var def = jquery.deferred (); var args = { "synthtext": text, "VoicesPeecer": Speecher, "WordsPeed": "3", "Usecssml": "0", "AudioPath": AudioPath}; tts.asynctts (json.stringify (args), function (err, result) {def.resolve (result);}); return def.promise (); } 함수 TextToSpeechBat (Metajson, Speecher, 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'+'", "VoicesPeecer": "'+speecer+'", "wordspeed": "3", "Usecsml": "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 (); } 함수 TextToSpeechWithtryTimes (Metajson, Speecher, Audiopath, Times) {var def = $ .deferred (); var ttsret = null; var ttscallback = function (index) {if (index <times) {textToSpeechBat (Metajson, Speecher, AudioPath) .Done (function (ret) {ret) {console.log ( "textTospeechwithtryTimes :"+json.stringify (ret)); var resultjsonarr = varioflagsonarr; i = 0; rengthjsonarr.length; i ++ retobj [rection '] {audioflag; def.resolve (ret); } if (index == times) {console.log ( "textToSpeechWithtryTimes timesover, return"); def.resolve (ttsret); }}; ttscallback (0); return def.promise (); }