如何在javascript中为函数添加回调

我有两个javascript函数

function one () { do something long... like writing jpgfile on disk } function two () { do something fast... like show the file } 

我这样称呼它(在jQuery中)

  one (); two (); 

因为函数二需要来自函数一的链接文件,我需要确保执行完成…所以在函数one的回调中获取函数2应该是技巧..但是如何做到这一点?

注意:我确实在这两个函数之间放了一个警报(’aaa’)让函数一个完成,它工作得很好……当警报被注释(删除)时,没有任何工作了!

如果你正在做异步的事情,你只需要使用一个回调,否则无论事情需要多长时间,下一个函数在第一个函数完成之前都不会运行。

回调只是将函数作为参数传递,然后在完成时调用它。

 function one (callback) { do something long... like writing jpgfile on disk callback(); } function two () { do something fast... like show the file } one(two); 

显然,如果你正在做一些异步的事情,那么你需要一些可以在完成时告诉你的事情(例如事件发生)。

简单:

 function one (callback) { do something long... like writing jpgfile on disk if(callback) callback(); } function two () { do something fast... like show the file } one(two); 

试试这个,

 $.when($.ajax(fuction1())).then(function () { fuction2; }); 

fuction1是你的第一个调用函数,fuction2是你的第二个函数。

我认为如果浏览器在执行下一行命令之前等待“one()”内的进程,这很容易。 冰山遭遇巨大因素,因为它不等待。 然后执行:

 one(two) // while two is the callBack parameter 

没有什么不同于:

 one() two() 

我建议使用setInterval。

 function one(){ //--- Write the file to disk //..................... } function runTwo(){ if (check_the_written_file_existence){ clearInterval(t) two(); } } var t = setInterval("runTwo()",500) 

最重要的一点是,如果在“one()”函数中的“长进程”发生时触发事件,则只需将函数二绑定到该事件即可。 除非,你必须在每个时间跨度检查结果,直到它真的完成。