1.es6出了一个很牛逼的promise对象
var _defer=new Promise(function(resolve,reject){
if(true){
resolve('成功')
}else
{
resolve('失败')
}
});
_defer.then(function(data){
console.log(data) // 成功
},function(){
console.log(data) // 失败
});有了这个牛逼东西,我们就脱离了回调地域,牛逼的东西固然好,但是
很可惜破ie不支持这个属性啊,真实悲催,很多用户都用ie, 是不是很沮丧呢,
值得庆幸的是,很多牛逼的框架都自己内置了promise,
例如: jquery
$.Deferred()
*
* deferred.promise() 方法允许一个异步函数阻止那些干涉其内部请求的进度(progress)或状态(status)的其它代码。
* Promise (承诺)对象仅会暴露那些需要绑定额外的处理或判断状态的延迟方法
* (then, done, fail, always, pipe, progress, state,和 promise)时,
* 并不会暴露任何用于改变状态的延迟方法
* (resolve, reject, notify, resolveWith, rejectWith, 和 notifyWith).
var _defer=$.Deferred();
if (true){
_defer.resolve('成功');
}{
_defer.reject('失败');
}
_defer.promise().then(function(data){
console.log(data) // 成功
},function(data){
console.log(data) // 失败
});再例如: angular
app.factory(,[,($q){
{
getServiceNav:(){
_defer=$q.defer(); $.ajax({
type: config.method,
url:config.url.intelServiceNav,
dataType: ,
data: {
uid: },
success: (data){
defer.resolve(data); global.consoleLogResponse(config.showLog,,data);
},
error:(){
_defer.reject(data); }
});
global.consoleLogRequest(config.showLog,,config.method,config.url.intelServiceNav,{
uid: });
_defer.promise; }
}
}]);promise = serviceNav.getServiceNav(); promise.then((data){
$scope.serviceNavList = data.result.data;
angular.forEach($scope.serviceNavList,(value,index) {
$scope.scope.token[value.cAbbr]=;
});
$scope.scope.getToken();
},(){
});-
« 上一篇:
画饼图的计算方法
-
前端解决跨域问题的8种方案
:下一篇 »