浅谈JavaScript异步编程
程序员文章站
2023-12-26 17:09:51
在一年前初学js的时候,看过很多关于异步编程的讲解。但是由于实践经验少,没有办法理解的太多,太理论的东西也往往是看完就忘。
经过公司的三两个项目的锻炼,终于对js异步编程...
在一年前初学js的时候,看过很多关于异步编程的讲解。但是由于实践经验少,没有办法理解的太多,太理论的东西也往往是看完就忘。
经过公司的三两个项目的锻炼,终于对js异步编程有了比较具体的理解。但始终入门较浅,在这里就当是给自己一个阶段性的总结。
在异步编程中,一条语句的执行不能依赖上一条语句执行完毕的结果,因为无法预测一条语句什么时候执行完毕,它与代码顺序无关,语句是并发执行的。
例如以下代码:
$.get($c.apipath+'ucenter/padcharge/findmember',{id:memberid},function(data){ if(data.error){ layer.close(memberlayer); padinout(padid,memberid); allpads(); } });
这三句在语境中的作用是,在完成某个ajax访问并成功获得数据之后,关闭某个弹层(1),执行padinout函数(2),执行allpads函数(3);(1)的顺序无所谓,但是我希望(3)在(2)之后执行,然而这几句代码无法达到我希望的结果,因为三个函数是同时执行的,allpads无法等待padinout执行完毕之后再执行,所以结果当然会出错。
我最后采取的解决方法是回调函数:在padinout函数定义加入回调函数,如下:
function padinout(padid,memberid,callback){ $f.postloading($c.apipath + 'ucenter/padcharge/padinout',{id:padid,memberid:memberid},function(data){ if(callback)callback() }); };
当方法执行完毕并且回调函数存在时,执行回调函数。此时函数执行时通过传参即可达到目的:
padinout(padid,memberid,allpads)
回调函数是js异步编程经常会用到的方法。然而使用回调函数存在不好的地方,即会造成回调地狱。所以es新标准出来也不断寻求解决回调的方案。这是后话,本篇写到这里。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
推荐阅读
-
浅谈JavaScript异步编程
-
javascript - 用户发帖应用开发中,用户异步上传了图片,但最终帖子没发布,那么上传的图不就没有用了吗怎么处理这种情况?
-
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史_javascript技巧
-
Javascript浅谈之this_基础知识
-
javascript - ajax异步请求数据,ios屏幕闪动
-
如何调试异步加载页面里包含的js文件_javascript技巧
-
浅谈cocos2dx(15) 中防异常编程模式
-
JavaScript如何使用fetch来完成异步请求的实例介绍
-
Javascript模块化编程(一)模块的写法最佳实践_基础知识
-
JavaScript函数式编程(二)