• javascript Deferred和递归次数限制


    function runAsyncTTS(text,speecher,audiopath) {
            var def = jQuery.Deferred();
            var args = {"SynthText": text, "VoiceSpeecher": speecher, "WordSpeed": "3", "UseCSSML": "0", "AudioPath": audiopath};
    
            tts.asyncTTS(JSON.stringify(args),function(err,result) {
                def.resolve(result);
            });
    
            return def.promise();
        }

    function 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']+'", "VoiceSpeecher": "'+speecher+'", "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();
        }

    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("textToSpeechWithTryTimes:"+JSON.stringify(ret));
                        ttsRet = ret;
                        var resultJsonArr = ret.resultJsonArr;
                        var audioFlag = true;
                        for(var i=0;i<resultJsonArr.length;i++) {
                            if(resultJsonArr[i] == "") {
                                audioFlag = false;
                                break;
                            }
                            var retObj = JSON.parse(resultJsonArr[i]);
                            console.log(retObj['audioFlag']);
                            if(retObj['audioFlag'] == 'false' || retObj['result']=="") {
                                audioFlag = false;
                                break;
                            }
                        }
                        console.log(audioFlag);
                        if(audioFlag == false) {
                            console.log("textToSpeechWithTryTimes Fail, try again!");
                            ttsCallBack(++index);
                        }else {
                            console.log("textToSpeechWithTryTimes succeed,return");
                            def.resolve(ret);
                        }
                    });
                }
    
                if(index == times) {
                    console.log("textToSpeechWithTryTimes timesover,return");
                    def.resolve(ttsRet);
                }
            };
    
            ttsCallBack(0);
            return def.promise();
        }

  • 相关阅读:
    从点子到产品
    基础设计模式
    SpringBoot单元测试
    结构化思维
    考试脑科学读书笔记
    爆发式成长的思维
    人人都是产品经理笔记
    文本处理工具awk
    CSP-S2019【绍兴一中集训】
    寒假集训【1.28】
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5302692.html
Copyright © 2020-2023  润新知