deferredlist.js

来自「尚学堂oa项目源码,用户管理」· JavaScript 代码 · 共 78 行

JS
78
字号
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified 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;}});

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?