速学Promise传递异步消息初步

jQuery中的异步处理
基本用法

$.post("http://xxx.com/getData.php",null,function(data){
    alert(data);
});

如果这里边又出现一次回调,怎么写呢?
很low的方式

$.post("http://xxx.com/getData.php",null,function(data){
    $.get();
});

这种回调里嵌套回调,可读非常差的。
其实jQuery中模拟了Promise的开发方式

var postResult = $.post("http://xxx.com/getData.php");
// 上一个成功才执行下面
postResult.done(function(data){
    alert(data);
});

这是jquery对promise写法的模拟,另外还有fail失败才执行回调、always不论成功还是失败都会执行。

下面来看一下ES2015中原生的promise
先看一段经典代码

var p = new Promise(function(resolve,reject){
    setTimeout(function(){ //可以把这句看成是ajax
        resolve("zhangsan"); //如果成功则执行resolve函数
    },1000);
});
p.then(function(data){ //如果成功
    console.log(data);//打印:zhangsan
},function(data){
  console.log("失败了");
});

Promise基本讲解
Pending(进行中,默认)、Resolved(已完成)、Rejected(已失败)。
promise构造函数接收一个函数作为参数,该函数的2个参数分别又是2个函数。
第一个表示成功后改变状态Pending -> Resolved
第二个表示失败后改变状态Pending -> Rejected
这个改变的过程需要我们手动实现.

另一种写法:

var p = new Promise((success,faile)=>{
    success("成功");
});

// 回调   
p.then(function(data){ //如果成功
    console.log(data);//打印:zhangsan
},function(data){
  console.log("失败了");
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值