当前位置:首页 > 日记 > 正文

浅谈JavaScript异步编程

浅谈JavaScript异步编程

在一年前初学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新标准出来也不断寻求解决回调的方案。这是后话,本篇写到这里。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

相关文章

js判断是否是手机页面

js判断是否是手机页面

手机页面,判断是否,电脑软件,js,话不多说,请看代码:<script>if (/mobile/i.test(navigator.userAgent) || /android/i.test(navigator.userAgent)) document.body.classList.add('mobile');window.addEventListener('load', function(eve…

excel 用函数开平方的教程

excel 用函数开平方的教程

教程,函数,开平,电脑软件,excel,  Excel中如何利用函数进行开平方操作呢?接下来是小编为大家带来的excel 用函数开平方的教程,供大家参考。excel 用函数开平方的教程(一)步骤:比如求 A1单元格 的算术平方根,只需在 B1单元格 输入公式"=powe…

Javascript仿京东放大镜的效果

Javascript仿京东放大镜的效果

京东,效果,电脑软件,Javascript,随便找一个图片吧。小伙伴们,想怎么玩就怎么玩(注意路径),亲自测试,绝对没问题。话不多说,请看代码:<html><head><meta charset="utf-8"><style type="text/css">body,div{margin: 0; padding: 0;}#zhuti{ marg…

Vue监听数组变化源码解析

Vue监听数组变化源码解析

数组,源码,电脑软件,Vue,上一篇的代码中,忽略了对数组的处理,只关心了需要关心的部分,假装数组不存在。这一篇开始考虑数组的问题。从最简单的入手先考虑一个问题,如何监听数组中的对象变化?忽略掉数组本身及其中的一般值,只考虑对象数组中的对象…

怎么设置PPT多影片播放效果

怎么设置PPT多影片播放效果

设置,影片,效果,多图,电脑软件,  在PPT幻灯片的制作过程中,经常需要在一张幻灯片上摆放多张图片、照片,但是空间有限,无法在一张幻灯片排放多张大的图片。以下是小编为您带来的关于设置PPT多图片影片播放效果,希望对您有所帮助。设置PPT多图…

JavaScript获取URL参数的方法之一

JavaScript获取URL参数的方法之一

方法,参数,电脑软件,JavaScript,URL,若地址栏URL为:abc.html?m=tomms&c=allsearchlist&pageNo=1&pageNum=20&text=1<script> //JavaScript获取url,并把url中的参数变成数组的方法,arr数组的值就是各参数值 var url = window.document.locati…

word2010如何使用插入对象功能将文

word2010如何使用插入对象功能将文

对象,文件,文档,功能,如何使用,  word2010中插入对象功能想必大家都有所接触过吧。在Word2010文档中,用户可以将整个文件作为对象插入到当前文档中。此功能有一个好处就是嵌入到Word2010文档中的文件对象可以使用原始程序进行编辑。以下是…

Excel中2007版进行设置工作表背景

Excel中2007版进行设置工作表背景

设置,操作,背景,工作,操作步骤,  我们在制作EXCEL工作表的时候,可以给表设置一个漂亮的背景,那要怎么设置呢? 今天,小编就教大家在Excel中2007版进行设置工作表背景的操作使用。Excel中2007版进行设置工作表背景的操作步骤首先选取需要设置…

Excel表格怎么设置半圆饼图数据标

Excel表格怎么设置半圆饼图数据标

数据,饼图,设置,标签,半圆,  Excel表格制作,有时候为了我们更直观的看到数据的比较,一般会用饼图形式来形成对比,但是饼图一般都是一整个圆,我们怎样才能制作半圆饼图呢?以下是小编为您带来的关于Excel设置半圆饼图数据标签,希望对您有所帮助…

ppt2010中怎么设置幻灯片自动循环

ppt2010中怎么设置幻灯片自动循环

设置,循环播放,方法,幻灯片,电脑软件,  ppt2010中怎么设置幻灯片自动循环播放?在我们的日常工作中,越来越需要频繁使用PPT,于是PPT抛头露面的场合越来越多,我们可能会需要PPT自动循环播放。下面小编就教你ppt2010设置幻灯片自动循环播放的…

React中ES5与ES6写法的区别总结

React中ES5与ES6写法的区别总结

写法,区别,电脑软件,React,前言相信很多React的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教程和例子都是ES5版本的,所以很多人在学习的时候连照猫画虎都不知道怎…

jQuery.Form实现Ajax上传文件同时

jQuery.Form实现Ajax上传文件同时

设置,方法,上传文件,电脑软件,Form,废话不多说了,关于jquery form实现ajax上传文件的方法,大家参考一下实例代码吧:<span style="font-family: Arial, Helvetica, sans-serif;">function ajaxSubmitForm() {</span> var option = {    u…