ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript は、連鎖非同期呼び出しフレームワーク Async.Operation_javascript スキルをサポートします

JavaScript は、連鎖非同期呼び出しフレームワーク Async.Operation_javascript スキルをサポートします

WBOY
WBOYオリジナル
2016-05-16 18:48:421375ブラウズ
复制代码代码如下:

Async = {};
Async.Operation = function(options) {
options = オプション || {};
var callbackQueue = [];
varchain = (options.chain && options.chain === true) ? true : false;
var 開始 = false;
var innerChain = null;
this.result = 未定義;
this.state = "実行中";
this.completed = false;
this.yield = function(result) {
var self = this;
if (!chain) {
self.result = 結果;
self.state = "完了";
self.completed = true;
} else {
開始 = true;
self.result = 結果;
self.state = "チェーン実行中";
self.completed = false;
}
setTimeout(function() {
if (!innerChain) {
while (callbackQueue.length > 0) {
var callback = callbackQueue.shift();
if (chain) {
callbackResult = callback(self.result);
self.result = callbackResult;
if (callbackResult && callbackResult インスタンス of Async.Operation) {
innerChain = Async.chain() ;
while (callbackQueue.length > 0) {
innerChain.next(callbackQueue.shift());
}
innerChain.next(function(result) {
self.result = 結果;
self.state = "完了";
結果を返す
}); self.result = 結果;
innerChain.go(result);
} else {
callback(self.result);
if (!innerChain) {
self.state = "completed";
self.completed = true;
}
} else {
while (callbackQueue.length > 0 ) {
innerChain.next(callbackQueue.shift());
}
innerChain.next(function(result) {
self.result = result;
self.state = "完了";
self.completed = true;
結果を返します。
});
}
}、1);
これを返します;
};
this.go = function(initialArgument) {
return this.yield(initialArgument);
}
this.addCallback = function(callback) {
callbackQueue.push(callback);
if (this.completed || (chain && starting)) {
this.yield(this.result);
}
これを返します;
};
this.next = function(nextFunction) {
return this.addCallback(nextFunction);
};
};
Async.chain = function(firstFunction) {
varchain = new Async.Operation({chain: true });
if (firstFunction) {
chain.next(firstFunction);
}
チェーンを返します。
};
Async.go = function(initialArgument) {
return Async.chain().go(initialArgument);
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。