异步、延迟、承诺

来源:互联网 发布:tensorflow 好玩 编辑:程序博客网 时间:2024/06/05 03:57
延迟模块的API遵循 promise 规范
$.Deferred()

$.Deferred()返回一个deferred(延迟)对象
var deffered = jQuery.Deferred();

给deffered添加延迟处理函数(承诺),可以链式调用
deferred.done()    解决
deferred.fail()    拒绝
deferred.always()  结束(解决或拒绝)
deferred.progress()进度变化
deferred.then()    结束或进度变化
延迟判决
deferred.notify()、deferred.notifyWith(args)  延迟进度通知,回调progress、then
deferred.reject()、deferred.rejectWith(args)  延迟被拒绝,回调fial、always、then
deferred.resolve()、deferred.resolveWith(args)延迟解决,回调done、always、then

同时处理多个deffered,$.when(deffered1,deffered2).then(function(){});

var promise = deferred.promise();返回承诺对象
promise可像deffered一样添加承诺(延迟处理函数)


$.ajax()
$.ajax() 发出请求并返回一个jqXHR对象,它是一个deferred对象,和XHR对象一样拥有 readyState、responseText、status、statusText等属性。
var jqXHR = $.ajax({});

给jqXHR 添加回调函数,可以链式调用
jqXHR .done() :请求成功回调,取代了 jqXHR .success        
jqXHR .always():请求结束回调,取代了jqXHR .complete
jqXHR .fail() :请求失败回调,取代了jqXHR .error
jqXHR同样拥有progress()、then()、promise()
同时处理多个jqXHR对象,$.when(jqXHR1 , jqXHR2).done(function(){})


$q.defer()


angularjs的$q.defer()返回一个延迟对象
var deferred = $q.defer();

延迟判决
  deferred.notify(args)  延迟进度通知
  deferred.resolve(args) 延迟解决
  deferred.reject(args)  延迟被拒绝
  
  var promise = deferred.promise;承诺对象
  添加承诺(延迟处理函数)
  promise.then(successCallback, errorCallback, notifyCallback)  按顺序添加承诺
  promise.catch(errorCallback)  拒绝
  promise.finally(callback)     始终(解决、拒绝、进展)

  
0 0
原创粉丝点击