zoukankan      html  css  js  c++  java
  • 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();
        }

  • 相关阅读:
    go语言-值类型与引用类型
    MongoDB小东西
    2018年12月29日
    父进程结束,其子进程不会结束,会挂到init进程下
    python处理Windows平台上路径有空格
    python print 在windows上 出现 Bad file descriptor error
    docker私有镜像仓库搭建
    docker 在centos6 和centos7上的区别
    virtualbox 设置centos7 双网卡上网
    Centos6.6安装docker
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5302692.html
Copyright © 2011-2022 走看看