2010-10-29 114 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