promise js 有哪些优点
2014年07月18日 18:06:53 阅读数:3691
处理异步请求,我们一般这样写
要求:先取得用户姓名,在根据姓名,取得用户的手机号
-
$.get('xxx.com/getUserName',function(data){
-
$.get('xxx.com/getMobile',{user:data.userName},function(data){
-
});
-
});
多个异步请求在一起,会出现嵌套深的情况,从而带来阅读和维护困难。
promise 本质上是分离了异步数据获取和业务逻辑,从而让开发人员能专注于一个事物,而不必同时考虑业务和数据
上面的例子,用promise 可以这样实现
-
// 第一部分 数据获取和加工阶段
-
var getUserName = function(){
-
return new Promise(function(resolve,reject){
-
$.get('xxx.com/getUserName',function(data){
-
resolve(data);
-
});
-
};
-
var getMobile = function(userName){
-
return new Promise(function(resolve,reject){
-
$.get('xxx.com/getUserMobile?user='+userName,function(data){
-
resolve(data);
-
});
-
});
-
}
-
// 第二部分 业务逻辑部分
-
getUserName().then(function(userName){
-
return getMobile(userName);
-
}).then(function(mobile){});
-
}
数据获取和逻辑分开,加强了代码的可维护性;更细的粒度,有利用代码复用
promise 是什么?
promises is that a promise represents the result of an asynchronous operation
A Promise
object represents a value that may not be available yet, but will be resolved at some point in future.
-
promiseMeSomething()
-
.then(function (value) {
-
}, function (reason) {
-
});
promiseMeSomething() 返回一个promise.如果promise 成功返回,则执行then 的第一个函数resolve,如果失败,则执行第二个函数reject
参考:
https://github.com/kriskowal/q