Hip*_*i0n 0 javascript api synchronization
我正在开发一个使用Google翻译API的简单网络应用程序,以便将文本翻译成不同的语言,然后再翻译成第一个.
问题是,当我调用google.language.translate(...)时,会指定一个回调函数来更新页面中的textarea.这里:
while (i < translationNumber) {
google.language.translate(testua, languages[i] , languages[i+1],
function(result) {
if (result.translation) {
text = result.translation;
f.textarea1.value = text;
}
});
alert('You must not close this until translation is done');
i++;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,需要一个警报才能手动等待翻译结束,以便按照我的语言数组的顺序正确翻译,否则múltiple翻译调用正在等待并且订单中断.如果我能在java或C中使用某种信号量会很棒,但是我在Javascript中很新手而且我不知道怎么能这样做.
你可以改为使这个函数在完成时调用自己
function translate(i) {
google.language.translate(testua, languages[i], languages[i+1], function(result) {
if (result.translation) {
text = result.translation;
f.textarea1.value = text;
if (i < translationNumber) { translate(i++); }
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,下一个翻译只会在翻译回调后进行实例化.
编辑:您需要添加的唯一内容是检查,以查看是否i已达到所需的值,因此它永远不会继续(: