Jquery AJAX如何使用Promise/Deferred实现顺序执行?

有的时候有我有N个AJAX请求,第下个请求可能要依赖上个请求的返回值, 可以用

$.ajax("test1.php").then(function(data) {
// data 是 test1.php 的返回值
return $.ajax("test2.php");
}).then(function(data) {
// data 是 test2.php 的返回值
return $.ajax("test3.php");
}).then(function(data) {
return $.ajax("test4.php");
});

  有的时候可以用when ,同时请求多个

function successFunc(){ console.log( “success!” ); }
function failureFunc(){ console.log( “failure!” ); }   

$.when(
   $.ajax( "/main.php" ),
   $.ajax( "/modules.php" ),
   $.ajax( “/lists.php” )
 ).then( successFunc, failureFunc );

  

时间: 2024-12-17 04:21:02

Jquery AJAX如何使用Promise/Deferred实现顺序执行?的相关文章

jQuery ajax同步的替换方法,使用 $.Deferred()对象

function aa() { var defer = $.Deferred(); $.ajax({ url: "/Handler1.ashx", type: "post", success: function (data) { defer.resolve(data);//这里的data数据会传到$.when(aa()).done(function(data) data里面 } }); return defer.promise(); } $(function ()

jQuery ajax的执行顺序简单介绍

jQuery ajax的执行顺序简单介绍:jQuery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false即可.代码如下: function TestAjax() { var UserName = $("#txtUserName").val(); $.ajax({ url:"AjaxCheckUserName.htm", async:false, success:function(data

jquery ajax中success与complete的执行顺序

jquery ajax中success与complete的执行顺序 jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.error 7.ajaxError (全局事件) 8.complete 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件) 先执行success,再执行error,最后始终执行complete -------

Java程序员之JS(一) 之 JQuery.ajax

背景:紧着现在项目的需要,先从JQuery.ajax出发,主要需求是通过 js 调用Java 代码,从而适应现在的项目. 先从几个概念开始讲解: 一. 什么是Deferred  Deferred 对象是由.Deferred构造的, .Deferred被实现为简单工厂模式.它是用来解决JS中的异步编程,遵循 Common Promise/A规范,实现此规范的还有when.js 和 dojo. Deferred 对象在 JQuery 1.5被引入,用来解决 Ajax 异步优化问题,正是由于 Defe

使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 页面事件与 deferred

在系列的上一篇文章<使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 事件详解>中,Kayo 介绍了除页面事件外的其他 jQuery Mobile 事件,而页面事件由于事件数较多,并且涉及 jQuery 中一个比较复杂的对象 deferred ,因此在本文中单独说明.jQuery Mobile 页面事件使用分为页面加载事件 (Page load events),页面跳转事件 (Page change events),页面显示/隐藏事件 (

jquery ajax实例教程和一些高级用法

jquery ajax的调用方式:jquery.ajax(url,[settings]),jquery ajax常用参数:红色标记参数几乎每个ajax请求都会用到这几个参数,本文将介绍更多jquery ajax实例,后面会有一些ajax高级用法 query ajax的调用方式:jquery.ajax(url,[settings]),因为实际使用过程中经常配置的并不多,所以这里并没有列出所有参数,甚至部分参数默认值,就是最佳实践,根本没必要去自己定义,除非有特殊需求,如果需要所有参数,可以查看jq

读jQuery之二十(Deferred对象)

Deferred对象是由$.Deferred构造的,$.Deferred被实现为简单工厂模式. 它用来解决JS中的异步编程,它遵循 Common Promise/A 规范.实现此规范的还有 when.js 和 dojo. $.Deferred作为新特性首次出现在版本1.5中,这个版本利用Deferred又完全重写了Ajax模块. $.Deferred在jQuery代码自身四处被使用,分别是promise方法.DOM ready.Ajax模块.动画模块. 这里以版本1.8.3分析,由于1.7后$.

按照顺序执行异步ajax的回调函数

//按顺序执行多个ajax命令,因为数量不定,所以采用递归 function send(action, arg2) { //将多个命令按顺序封装成数组对象,递归执行 //利用了deferred对象控制回调函数的特点 $.when(send_action(action[0], arg2)) .done(function () { //前一个ajax回调函数完毕之后判断队列长度 if (action.length > 1) { //队列长度大于1,则弹出第一个,继续递归执行该队列 action.sh

把ajax包装成promise的形式(3)

概述 为了体验promise的原理,我打算自己把ajax包装成promise的形式.主要希望实现下列功能: // 1.使用success和error进行链式调用,并且可以在后面加上无限个 promise.get(myUrl).success(successCallback1).error(errorCallback1).success(successCallback2).error(errorCallback2).error(errorCallback3).success(successCall