js中的同步与异步

摘要:
有时需要将异步请求的结果返回给另一个js函数。发送请求的js函数已完成后续操作,这将导致返回null。该函数已执行return,function(data){dosomething….Result=….}//在处理ajax中返回的数据时,还会出现returnresult错误;false,类型:成功:

同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码   
异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而可以继续在客户端做其它事情。

可以简单的理解认为同步是单线程的异步是多线程的          

在使用异步请求时,有时需要将异步请求的结果返回给另一个js函数,此种情况下会出现未等异步请求返回请求结果,该发送请求所在js函数已经执行完后续操作,即已经执行return ,这样会导致return的结果为空字符。

所以:若要在使用ajax请求后处理发送请求返回的结果,最好使用同步请求。

这个例子会出现返回结果不正确的情况,因为ajax异步请求还未执行完,函数已经执行return了,

function fn(){

var result = " ";

$.ajax({
url : 'your url',
data:{name:value},
cache : false,
async : true,
type : "POST",
success : function (data){
do something....

result = ....
}

// 对ajax中返回的data进行处理 ,也会出错

return result ;

异步请求方式: 

$.ajax({
url : 'your url',
data:{name:value},
cache : false,
async : true,
type : "POST",
dataType : 'json/xml/html',
success : function (result){
do something....
}
}); 
同步请求方式 
$.ajax({
url : 'your url',
data:{name:value},
cache : false,
async : false,
type : "POST",
dataType : 'json/xml/html',
success : function (result){
do something....
}
}); 

免责声明:文章转载自《js中的同步与异步》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux 进程间通信(一)Java多线程 -yield用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HighChart 实现从后台取数据来实时更新柱状和折线组图

前段时间公司让弄图表,给我说有HighCharts这个js插件,于是上网上搜,由于本人是写后端的,对于JavaScript和jQuery不是很熟悉,虽然找到了模板,但是还是不明白,所以一点一点的改,但好的结果是最后还是搞出来,所以写个随笔,记录和总结下 var id =${id}; $.ajax({ url: '${base}/ac...

npm ERR! mathine_call@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js` npm ERR! Exit status 1

internal/modules/cjs/loader.js:583 throw err; ^ Error: Cannot find module 'webpack' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15) at...

在Ubuntu Kylin 16.04 LTS 上源码方式安装odoo

更新Ubuntu服务器软件源 运行以下代码: sudo apt-get update  #更新软件源   sudo apt-get dist-upgrade  #更新软件包,自动查找依赖关系   sudo shutdown -r now  #重启服务器,以更新改变的内容    新建系统用户用于运行Odoo程序 运行如下命令创建系统用户: sudo...

TFS2008 基本安装

TFS2008基本安装 TFS(Team Foundation Server)2008的安装真的是比较麻烦,如果是第一次安装,基本上就会失败,下面将本人的安装经验总结一下,帮助后用的朋友少走些弯路。 如果大家有什么问题可以给我发Email:warensoft@163.com 1.        安装过程列表 预先准备: l         如果是Wind...

django数据库的增删改查

正常启动服务安装数据库cmd命令:python manage.py makemigrations 创建用户 在pxm里面会有一个py文件..这就是生成了表结构cmd命令:python manage.py migrate 自带的一些表 导入这就是正向导入数据库 反向导入数据库:python manage.py inspectdb > son1/mode...

tf.GradientTape() 使用

import tensorflow as tfw = tf.constant(1.)x = tf.constant(2.)y = x*wwith tf.GradientTape() as tape: tape.watch([w]) y2 = x*wgrad1 = tape.gradient(y,[w])print(grad1)结果为[None...