我正在嘗試編寫一個腳本,可以讓我快速檢查Google翻譯多次翻譯時單詞的變化。不幸的是,我不是很有經驗的Javascript和我不能牽制我有這個問題的根源:這是同步問題嗎?使用谷歌翻譯來翻譯單詞。
function initialize() {
var word = "Hello";
var english = [word];
var german = [];
document.write("1");
var i = 0;
for (i=0; i<10; i++) {
google.language.translate(english[i], 'en', 'de', function(result) {
if (!result.error) {
german.push(result.translation);
document.write(result.translation);
}
else {
document.write(result.error.message);
}
document.write("2");
});
document.write("3");
google.language.translate(german[i], 'de', 'en', function(result) {
if (!result.error) {
english.push(result.translation);
document.write (result.translation);
}
else {
document.write(result.error.message);
}
document.write("4");
});
document.write("5");
}
}
google.setOnLoadCallback(initialize);
正如你所看到的,第二次調用google.language.translate需要爲第一次電話會議的結果。我希望看到這樣的事情在文檔中,這是運行時:
1Hallo23Hello45Hallo23Hello45Hallo23Hello45 ...
相反,我得到13Hallo2和崩潰。因爲它打印1和3(即它執行doc.write(「3」),然後它執行所有的第一次調用翻譯)我懷疑某種異步行爲正在進行。我使用的代碼按照我寫的順序執行!幫幫我!理想情況下,我想知道如何讓循環的其餘部分僅在第一次調用Google翻譯後才執行。
我做了這個修改,經過一番推動之後,它修復了這個問題。謝謝! –