问题描述
- 为什么javascript异步函数一定要用回调的方式?
-
对于异步函数来说,回调方式和同步方式有何区别?service .queryActivityJoin(data) .done(function (response) { // 如果已经参加 if (response.data.is_join == 1) { $('.prize').css({ "background-image": "url(http://img.gsxservice.com/0cms/d/file/content/2015/01/54b8a83098788.jpg)" }); } // 如果还没有参加 else if (response.data.is_join == 0) { $('#appmain') .on('click', '.prize', function () { service.addActivityJoin(data); window.location.reload(); }); } });
解决方案
因为JS是单线程的,回调好处在于避免JS阻塞
解决方案二:
其实不一定
https://cnodejs.org/topic/5425fb61326dfbe724dbd64e
看这个代码,就可以用你熟悉的方式调用异步代码了,无需写回调。
解决方案三:
当然了,回调的方式更直观,因为异步的含义就是调用后不管, 继续执行自己的代码,而异步执行什么时候结束是不知道的。执行好了通知你。
用回调函数很好体现了这一点。
解决方案四:
居于回调就不会阻塞ui了。。js没有线程的概念,你不居于回调,一个for循环几万次做大量计算你流量器就假死了。就和你ajax同步异步一样。
时间: 2024-09-12 02:29:57