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种方案
:下一篇 »