延期と再帰の制限を知っていますか?以下に良い例があります、あなたは見ることができます
関数runasynctts(テキスト、スピーチ、audiopath){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"、 "usecssml": "0"、 "audiopath": "'+'" 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(); } function 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){console.log( "console.log("+json.stringify(ret)); ttsret = ret = retjsonarr = ret.resultjsonarr; i = 0; <resultjsonarr.if(resultjsonarr [i] == "){audioflag = false; retobj ['result'] {audioflag.log(audioflag ==); def.resolve(ret); } if(index == times){console.log( "texttospeechwittrytimes times、return"); def.resolve(ttsret); }}; ttscallback(0); return def.promise(); }