2010-10-29 60 views
0

我已經問過一個問題,但我想以另一種方式問另一個問題。這可能會在異步模式下調用10次方法而不指定返回值。我正在一個頁面上做所有事情。我不需要訪問任何其他頁面。我有一套操作,每個操作都應該等待上一個操作。回調函數與jquery

這樣的:

$.get('myhtmlpage.html', function(){ 
    myCallBack(param1, param2); 
}); 

或像這樣:

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++); } 
     } 
    } 
} 

我相信這些都告訴我的東西,但我需要看樣品..

http://api.jquery.com/jQuery.ajax/
http://docs.jquery.com/How_jQuery_Works#Callback_and_Functions

或建議我請。

示例代碼會很棒!

感謝.. 問候..

+0

你指定了「myCallBack」嗎?我不確定我明白。當你通過$ .get打到myhtmlpage.html時,你會得到什麼? – 2010-10-29 02:53:18

+0

它不完全清楚你在這裏試圖做什麼。 'translate'應該是你的回調,還是從'myCallback'內調用?你需要多次調用它 - 是否需要調用'n'次或'$ .get'來轉換? – prodigitalson 2010-10-29 02:54:46

+0

我只需要一段示例代碼告訴我如何異步調用函數。問題中的代碼是示例代碼,而不是我自己的代碼。這樣說:你從1到10循環。2將等待1,3將等待2等等。但是,在我的代碼中,每個進程運行需要更長的時間。每個人都應該等待對方。現在清楚嗎? BTW:非常感謝您的回覆.Ozlem。 – Ozlem 2010-10-29 03:08:13

回答

0

我想你可能誤解的JavaScript是如何工作的。在JavaScript中,你只有一個線程,這意味着你不能異步調用任何函數。execpt當你做AJAX風格的調用。

簡短的回答是,你不能異步調用方法。

+0

也許我的解釋是錯誤的。我只需要爲數組中的每個元素調用一個函數,並且我希望它們相互等待。例如,您有一個從1到10計數的數組。2將等待1,3將等待2並且等等。然而,每個流程(我的數組中的每個元素)的成本在時間上要昂貴得多,每個流程的成本可能會更高。這就是爲什麼我需要這個。現在你能幫我解釋一下嗎? – Ozlem 2010-10-29 06:24:42

+0

恐怕答案仍然是Javascript無法做到。你可以這樣做: function_1(); function_2(); function_3(); 但是你不能讓JavaScript在瀏覽器中並行運行它們。唯一的例外是如果'function_1()'或'function_2()'進行AJAX調用。 – 2010-11-01 01:02:10