Rev 1422 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.require("dojo.Deferred");dojo.provide("dojo.DeferredList");dojo.DeferredList = function (list, fireOnOneCallback, fireOnOneErrback, consumeErrors, canceller) {this.list = list;this.resultList = new Array(this.list.length);this.chain = [];this.id = this._nextId();this.fired = -1;this.paused = 0;this.results = [null, null];this.canceller = canceller;this.silentlyCancelled = false;if (this.list.length === 0 && !fireOnOneCallback) {this.callback(this.resultList);}this.finishedCount = 0;this.fireOnOneCallback = fireOnOneCallback;this.fireOnOneErrback = fireOnOneErrback;this.consumeErrors = consumeErrors;var index = 0;var _this = this;dojo.lang.forEach(this.list, function (d) {var _index = index;d.addCallback(function (r) {_this._cbDeferred(_index, true, r);});d.addErrback(function (r) {_this._cbDeferred(_index, false, r);});index++;});};dojo.inherits(dojo.DeferredList, dojo.Deferred);dojo.lang.extend(dojo.DeferredList, {_cbDeferred:function (index, succeeded, result) {this.resultList[index] = [succeeded, result];this.finishedCount += 1;if (this.fired !== 0) {if (succeeded && this.fireOnOneCallback) {this.callback([index, result]);} else {if (!succeeded && this.fireOnOneErrback) {this.errback(result);} else {if (this.finishedCount == this.list.length) {this.callback(this.resultList);}}}}if (!succeeded && this.consumeErrors) {result = null;}return result;}, gatherResults:function (deferredList) {var d = new dojo.DeferredList(deferredList, false, true, false);d.addCallback(function (results) {var ret = [];for (var i = 0; i < results.length; i++) {ret.push(results[i][1]);}return ret;});return d;}});