文档章节

顺序发送异步请求、同时发送异步请求;apply()与call()的区别

木子丰
 木子丰
发布于 2014/02/19 17:07
字数 453
阅读 68
收藏 2

前台发送异步请求的情况:
1、顺序发送:A执行完了,再执行B
2、无序发送:A、B执行的顺序无所谓
3、同时发送:A、B同时执行
==========================================
对于顺序发送
$.when(A).then(function() {B});(then可换为done)
==========================================
对于无序发送
1.直接按代码顺序执行A,B或$.when(A,B)
$.when(A,B)的其它写法$.when.apply(thisArg, [A,B])$.when.call(thisArg,A,B)
2.使用Function.prototype.apply()方法:
语法:fun.apply(thisArg,argsArray)
fun为一个函数
thisArg为运行函数的作用域(或理解成调用函数的对象)
argsArray为参数任务列表,如果其长度为3,则fun函数执行3次,分别取argsArray[0],argsArray[1],argsArray[2]作为参数分别运行。

fun ... $.when
thisArg ... $
argsArray ... [A,B]

代码如下:
var tasks = [A,B];
$.when.apply($,tasks);
3.使用Function.prototype.call()方法:
语法:fun.call(thisArg,args[0],args[1],...)

其实apply()与call()本质上是一样的,只不过apply把所有的参数放到一个数组中,通过数组传递,而call需要把每个参数都详细列出,


==========================================
对于同时发送:像java的多线程一样

1,按顺序书写代码即可:A;B;因为A,B都是异步请求,请求发送后,会接着执行后面的代码
或通过setTimeout实现(感觉有点多此一举)
setTimeout(function() {A}, 10);
setTimeout(function() {B}, 10);
虽然不是真正意义上的同时执行,但是效果差不多了
==========================================


对于使用$.when方法执行异步请求后,要返回deferred对象的情况:

var deferred = new Deferred();
$.when(A,B).then(
    function() {
        deferred.resolve({});
    },
    function() {
        deferred.reject({});
    },
);
return deferred;
//由于异步的原因deferred对象会先返回,其后根据A,B的执行情况,会影响其状态:成功或失败


 

© 著作权归作者所有

木子丰
粉丝 18
博文 236
码字总数 68754
作品 0
郑州
程序员
angular学习笔记-$q服务

angular中的$q是用来处理异步的(主要当然是http交互啦~). $q采用的是promise式的异步编程.什么是promise异步编程呢? 异步编程最重要的核心就是回调,因为有回调函数,所以才构成了异步编程,而回...

孟飞阳
07/17
0
0
RocketMQ源码分析(二)Producer端发送数据

1 系列 - 整体架构图- producer端发送消息- broker端接收消息- broker端消息的存储- consumer消费消息- 分布式事务的实现- 定时消息的实现- 关于顺序消费话题- 关于重复消息话题- 关于高可用...

乒乓狂魔
2016/10/09
469
1
Flink 原理与实现:Aysnc I/O

背景 Async I/O 是阿里巴巴贡献给社区的一个呼声非常高的特性,于1.2版本引入。主要目的是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。 流计算系统中经常需要与外部系统进行交互...

张欢19933
08/27
0
0
何为同步和异步

Android Telephony相关应用中,Telephony大量使用了Handler、Broadcast等通信方式,而在Android操作系统平台中的Handler消息处理、Broadcast广播消息等均采用异步通信机制,那么我们首先要清...

colorlesswind
2015/12/03
107
0
OkHttp3.0-源码分析

1. OkHttp官网介绍: OkHttp: An HTTP+HTTP/2 client for Android and Java applications. 该库支持 HTTP1.0、HTTP1.1、HTTP2.0 以及 SPDY ,都在类Protocol 中声明。 2. OkHttp的基本使用:......

负了时光不负卿
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
15分钟前
0
0
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 解决

有个项目使用的log4j进行日志记录的,同时也是用log4j中的数据库配置直接把相应级别的日志直接插入oracle。 在把项目部署的另一个内网环境时候,把项目的其他配置都改了,唯独log4j中的数据库...

哥本哈根的小哥
24分钟前
0
0
耗时 2 年,用 8.5 万块乐高积木最牛复刻 Apple Park

简评:国外大佬复刻 Apple Park,看了一下细节,确实厉害!只有你想不到,没有乐高拼不起来的,有没有乐高大神挑战一下? 苹果公园以各种各样的方式鼓舞人心,让人感兴趣。从建筑、可持续性和...

极光推送
26分钟前
0
0
记一次查找Hdfs磁盘占用空间比实际存储文件大4倍的原因

在一次主备namenode发生切换后,重启datanode节点,发现磁盘空间很大,想清理一下磁盘, 通过命令Hdfs dfs -du -h --max-depth=1 / 发现实际文件的大小只有8g,通过du -h --max-depth=1 /ha...

PageYi
52分钟前
4
0
阿里云推荐引擎使用教程

产品概述: 推荐引擎(Recommendation Engine,以下简称RecEng,特指阿里云推荐引擎)是在阿里云计算环境下建立的一套推荐服务框架,目标是让广大中小互联网企业能够在这套框架上快速的搭建满...

mcy0425
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部