2009-07-16 16 views
0

私は、テキストをさまざまな言語に翻訳してから最初のテキストに戻すためにGoogle翻訳APIを使用する単純なWebアプリケーションを開発しています。JavaScriptの同期方法

問題は、私が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でかなり初心者ですし、どうやってこれを行うことができるのか分かりません。

+0

たいですか配列の順序に従う? –

+0

私はそのアラートを削除して、関数呼び出しをブロッキングまたは同期化するために翻訳をsecuentiallyで実行するようにしたい。さもなければ、ループを実行して翻訳を受け取るが、 – Hiperi0n

答えて

8

代わりに、次の翻訳は、翻訳のみからのコールバック後instansiatedされます完了

​​

その方法で自分自身を呼び出します。この機能を作ることができます。

編集:あなたが追加する必要がある唯一のものは、(iが所望の値に達しているので、それは永遠に上に行くしないかどうかを確認し、されています。あなたがテキストエリアが更新され

+0

無限に、そしてそれ以上! – Blixt

+0

ありがとう、私はそれが動作すると思います:-) – Hiperi0n

関連する問題