คุณรู้หรือไม่ว่าการรอการตัดบัญชีและขีด จำกัด การเรียกซ้ำหรือไม่? มีตัวอย่างที่ดีด้านล่างคุณสามารถดูได้
ฟังก์ชั่น runasynctts (ข้อความ, นักพูด, เสียง) {var def = jQuery.deferred (); var args = {"synthtext": text, "voicespeecer": นักพูด, "WordsPeed": "3", "usecssml": "0", "Audiopath": Audiopath}; tts.asynctts (json.stringify (args), ฟังก์ชัน (err, ผลลัพธ์) {def.resolve (ผลลัพธ์);}); ส่งคืน def.promise (); - ฟังก์ชั่น TextTospeechBat (metajson, นักพูด, เสียง) {var def = $ .deferred (); var result = {Originalwords: "", resultjsonarr: []}; var JSons = ""; สำหรับ (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": " jsons + = args + "|"; } jsons = jsons.substr (0, jsons.length-1); tts.asyncttsbat (jsons, ฟังก์ชั่น (err, ret) {ผลลัพธ์ ['resultjsonarr'] = ret.split ('|'); def.resolve (ผลลัพธ์);}); ส่งคืน def.promise (); - ฟังก์ชั่น texttospeechwithtrytimes (Metajson, นักพูด, เสียง, เวลา) {var def = $ .deferred (); var ttsret = null; var ttscallback = ฟังก์ชั่น (ดัชนี) {ถ้า (ดัชนี <ไทม์) {texttospeechbat (metajson, นักพูด, เสียง) .done (ฟังก์ชั่น (ret) {console.log ("texttospeechwithtime:" json.stringify (ret)); i = 0; i <resultjsonarr.length; i ++) {ถ้า (resultjsonarr [i] == "") {audioflag = false; retobj ['ผลลัพธ์'] == ") {Audioflag = False; def.resolve (ret);}}); } if (index == times) {console.log ("texttospeechwithtrytimes Timesover, return"); def.resolve (ttsret); - ttscallback (0); ส่งคืน def.promise (); -