promise js 有哪些优点

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

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

[javascript]  view plain  copy
  1. $.get('xxx.com/getUserName',function(data){  
  2.     $.get('xxx.com/getMobile',{user:data.userName},function(data){  
  3.     });  
  4. });  

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

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

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

[javascript]  view plain  copy
  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.


[html]  view plain  copy
  1. promiseMeSomething()  
  2. .then(function (value) {  
  3. }, function (reason) {  
  4. });  

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

参考:

https://github.com/kriskowal/q

你可能感兴趣的:(promise)