promise

promise js 有哪些优点

2014年07月18日 18:06:53 阅读数:3691

处理异步请求,我们一般这样写

要求:先取得用户姓名,在根据姓名,取得用户的手机号

 

 
  1. $.get('xxx.com/getUserName',function(data){

  2. $.get('xxx.com/getMobile',{user:data.userName},function(data){

  3. });

  4. });

 

多个异步请求在一起,会出现嵌套深的情况,从而带来阅读和维护困难。

promise 本质上是分离了异步数据获取和业务逻辑,从而让开发人员能专注于一个事物,而不必同时考虑业务和数据

 

上面的例子,用promise 可以这样实现

 

 
  1.  
  2. // 第一部分 数据获取和加工阶段

  3. var getUserName = function(){

  4. return new Promise(function(resolve,reject){

  5. $.get('xxx.com/getUserName',function(data){

  6. resolve(data);

  7. });

  8. };

  9. var getMobile = function(userName){

  10. return new Promise(function(resolve,reject){

  11. $.get('xxx.com/getUserMobile?user='+userName,function(data){

  12. resolve(data);

  13. });

  14. });

  15. }

  16. // 第二部分 业务逻辑部分

  17. getUserName().then(function(userName){

  18. return getMobile(userName);

  19. }).then(function(mobile){});

  20.  
  21. }


数据获取和逻辑分开,加强了代码的可维护性;更细的粒度,有利用代码复用

 

promise 是什么?

promises is that a promise represents the result of an asynchronous operation

Promise object represents a value that may not be available yet, but will be resolved at some point in future.

 

 

 
  1. promiseMeSomething()

  2. .then(function (value) {

  3. }, function (reason) {

  4. });


promiseMeSomething() 返回一个promise.如果promise 成功返回,则执行then 的第一个函数resolve,如果失败,则执行第二个函数reject

 

参考:

https://github.com/kriskowal/q

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值