我正在开发一个简单的网络应用程序,它使用 Google 翻译 API 将文本翻译成不同的语言,然后再翻译回第一种语言。
问题是,当我调用 google.language.translate(...) 时,指定了一个回调函数来更新页面中的文本区域。这里:
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++;
}
如您所见,需要发出警报才能手动等待翻译结束,以便按照我的语言数组的顺序正确翻译,否则多个翻译调用将挂起并且顺序会中断。如果我可以在 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++); }
}
}
}
这样,只有在翻译回调后才会实例化下一个翻译。
编辑:您唯一需要添加的是检查,看看i
是否达到了所需的值,所以它不会永远持续下去( :
关于JavaScript 同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1135988/