2007年 01月 12日

CometObserver

function CometObserver () {
	this.init.apply(this, arguments);
}
CometObserver.prototype = {
	init : function (opts) {
		this.opts = {
			url         : null,
			callback    : operator.identity,
			recallAfter : 5 // sec
		};
		update(this.opts, opts);
	},

	update : function () {
		if (this.running) return;
		var self = this;
		loadJSONDoc(this.opts.url).addCallbacks(
			function (res) {
				self.runnning = false;
				try {
					self.opts.callback(res);
				} catch (e) { log(e) }

				// すぐに呼ぶ
				self.update();
			},
			function (err) {
				log(err);
				self.running = false;
				callLater(self.opts.recallAfter, function () {
					self.update();
				});
			}
		);
	}
};

JSON 返す CometAPI を使うためのコード、らしい(覚えてない