如何在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()”函数中的“长进程”发生时触发事件,则只需将函数二绑定到该事件即可。 除非,你必须在每个时间跨度检查结果,直到它真的完成。