2009-07-16 79 views
0

我正在開發一個簡單的Web應用程序,它使用Google翻譯API將文本翻譯成不同的語言,然後回到第一個。Javascript同步方法

問題是,當我打電話給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++; 
} 

正如你看到的,是必要的,以手動等待轉換結束,因此在我的語言數組的順序翻譯正確警報,否則多個翻譯呼叫掛起和秩序休息。如果我可以在java或C中使用某種信號量,那將是非常好的,但是我在Javascript中很新手,我不知道如何做到這一點。

+0

你想textarea的更新根據數組順序? – 2009-07-16 07:47:05

+0

我想刪除該警報,並使谷歌翻譯函數調用阻塞或同步,以便翻譯完成,否則它執行循環,然後我收到翻譯,但不是順序的翻譯,只是把原文翻譯成不同的語言。 – Hiperi0n 2009-07-16 07:55:24

回答

8

你可能反而讓這個函數會調用本身完成

​​

這樣的話,接下來的翻譯只會從翻譯回調後instansiated。

編輯:你需要補充一點的是檢查,看看是否i已經達到期望值,因此它不會一直持續下去(: