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();
        }

  • 相关阅读:
    从首页看CCS布局
    Community Server专题一:概述Community Server
    datagrid程序增加列的方法
    类的关键字
    base 关键字用于从派生类中访问基类的成员:
    关于CS1.1后台管理页面的研究
    如何:创建同步 HTTP 处理程序
    Community Server专题二:体系结构
    SqlTransaction 类
    单继承与多实现
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5302692.html
Copyright © 2011-2022 走看看