Javascript延迟和递归限制实例
你知道延迟和递归限制的数量吗下面是一个很好的例子。你可以看到它。功能runasynctts(文本,演讲者,audiopath){
递延();
var args = {synthtext ):文本,voicespeecher 的演讲者,wordspeed ,3
Tts.asyncTTS(JSON.stringify(args),功能(呃,结果){
def.resolve(结果);
});
返回def.promise();
}
功能texttospeechbat(metajson,演讲者,audiopath){
var(=);
VaR结果= { originalwords:
无功jsons = ;
对于(VAR指标= 0;指数小于metajson.words.length;指数+ +){
var Audioname = metajson。词} { } {指数'audio;
Audioname = audioname.replace('。MP3 ',');
VaR audiofile = audiopath +/+ Audioname + .wav;
var args ={synthtext :+ metajson话{ } { 'word指数。} +
jsons =参数+ | ;
}
jsons = jsons.substr(0,jsons。length-1);
Tts.asyncTTSBat(jsons,功能(呃,RET){
结果'resultjsonarr} = { ret.split(' |);
def.resolve(结果);
});
返回def.promise();
}
功能texttospeechwithtrytimes(metajson,演讲者,audiopath,倍){
var(=);
无功ttsret = null;
无功ttscallback =函数(指数){
如果(索引<次数){
texttospeechbat(metajson,演讲者,audiopath)。做(功能(RET){)
console.log(texttospeechwithtrytimes:+ json.stringify(RET));
ttsret = ret;
无功resultjsonarr = ret.resultjsonarr;
无功audioflag =真;
对于(var i = 0;i < resultjsonarr.length;i++){
如果(resultjsonarr {我} = ={)
audioflag = false;
打破;
}
无功retobj = JSON.parse(resultjsonarr {我});
console.log(retobj { 'audioflag});
如果(retobj { } = = 'audioflag '假' | | { retobj { } = = 'result)
audioflag = false;
打破;
}
}
console.log(audioflag);
如果(audioflag = = false){
console.log(texttospeechwithtrytimes失败,再试一次!;
TtsCallBack(+指数);
{ }人
console.log(texttospeechwithtrytimes成功,返回);
def.resolve(RET);
}
});
}
如果(索引=时间){
console.log(texttospeechwithtrytimes倍,回报);
def.resolve(ttsret);
}
};
(0)ttscallback;
返回def.promise();
}