ajax多信号逻辑的promise写法实现
作者:admin 日期:2016-02-11ajax的这种多信号量情况经常遇上。比如:先从服务器得到一个信号变量A,如果A为真,再从服务器获取信号B,B为真,再......如果用传统的回调方式写,Ajax就是一大堆的callback堆叠,看得头疼,而且不好一层层用函数分开。
解决这个问题,用到jQuery的deferred对象(参见阮一峰原文):$.ajax()操作完成后,如果使用的是低于1.5.0版本的jQuery,返回的是XHR对象,你没法进行链式操作;如果高于1.5.0版本,返回的是deferred对象,可以进行链式操作。
我写了个简化后的例子:
Javascript代码
- $.ajax("/api-a")
- .done(function(data){
- console.log("第1步完成");
- // 如果第1步数据中的result允许,则第2步
- if(data.result){fun2(); }
- })
- .fail(function(){ console.log("第1步失败") });
- //第2步操作可以放到一个函数中,这样看起来代码更清晰
- function fun2() {
- $.ajax("/api-b" )
- .done(function(data){
- console.log("第2步完成");
- console.log(data);
- })
- .fail(function(){ console.log("第2步失败") });
- }
评论: 0 | 引用: 0 | 查看次数: 4479
发表评论