js 回调函数问题的执行结果想作为返回值

你都知道Callback了就老老实实按Callback的方法写<br>JS除了alert, prompt等没有优雅的锁线程的方法<br><br><br>给个例子<br>function searchByStationName(address,Callback)<br>{<br> // map.clearOverlays();//清空原来的标注<br> var

里面的return,返回的只是里面的匿名函数,<br>即返回值作为local.setSearchcallback()这个函数的参数执行<br><br>而不是返回给最外面的searchBystationName()这个函数<br><br>实际上searchBystationName这个函数并没有返回值.

把客户端操作时间作为ajax的回调函数,实现如下://客户端计时器 function timer(time){ var t = setInterval(function(){ time --; //todo }, 1000); }//从服务端读取时间 function initDate(url) { $.getJSON(url, function (data, status) { if (status == "success") { //假设data就是返回的时间 timer(data); } }); } initDate('/ashx/GetCurrentTime.ashx');

因为他是回调函数,具有异步性你应该在这个函数里面完成你的操作.

这问题不是这i么解的吧,异步的回调函数,你获取回调函数的返回值,时间不确定的.要加个标志位来判断回调函数是否执行完毕.

如果你的ajax是异步的,建议处理数据在回调函数中处理,如果值同步的就直接返回出去.

我想你的问题是这样的:函数A中异步调用函数B,然后你想要函数A返回B中的结果.简言之:这不可能.因为你*异步*调用的B,函数A中程序的执行顺序就是调用B之后,不等B返回结果,立即顺序执行后面的语句,在你的例子中,就是return

回调函数可以继续扩展一个函数的功能,可以是程序非常灵活.比如:function showdiv(callback){ $("#div1").show(); callback($("#div1"));}showdiv(function($div){ $div.text("hello world");});//原本showdiv的功能就是现实一个div,加了

因为$.get默认的是异步,这样当然就无法返回结果了.改用$.ajax(),并设定async为false

回调函数能保证代码执行的顺序性,能避免异步带来的问题

相关文档

bfym.net
snrg.net
zxpr.net
bnds.net
gmcy.net
电脑版