ファイルのセット、module1.js、module2.js、module3.js があり、これらのそれぞれには、実行されるプロパティ メソッドを持つ戻りオブジェクトが含まれています。オブジェクトが検査されてプロパティ名が動的に決定され、.toString()
メソッドが決定されます。
内部メソッドには、ほぼ確実に次のような非同期呼び出しが含まれます。
function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
}
ファイル module1.js、module2.js、および module3.js への書き込み可能なアクセス権を積極的に持たずに、呼び出し元の親メソッドからこれらのメソッドをマーシャリングして、最終的に値を返すにはどうすればよいですか。それらは石で鋳造され、決して編集できないと仮定します。合理的な他のすべては公正なゲームです。ただ、「doSomething を書き直して CB を渡し、CBmakeDeep
でラップできるようにしてください」とは言わないでください。私は自分のコードからこのモジュールを呼び出していることに注意してくださいmakeAsync
。モジュールの作成者が呼び出したい非同期メソッドは何でもです。
重要な注意:私は書いているmakeDeep
人であり、モジュールを含んでいるので、これら2つの場所のいずれかであなたが望むことは何でもできmakeDeep
、モジュールに動的に注入されます(私はミックスインパターンを行っています)。 「親」呼び出しメソッドで動作するように変更するか、何かに依存してmakeDeep
います。これは100%合理的であり、私はそれについてすべてです。
この場合、return
キーワードを前に持つ「必要」はありませんmakeDeep
が、構文でそれらの単語が使用されている場合はボーナス ポイントがあります (これは開発者に、それがコードの終了点であることを強く示していますか?)
module1.js が次のようになっているとします。
module.exports = function() {
this.doSomething11 = function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
}
}
module2.js
module.exports = function() {
this.doSomething21 = function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
};
this.doSomething22 = function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
};
}
module3.js
module.exports = function() {
this.doSomething31 = function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
};
this.doSomething32 = function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
};
this.doSomething33 = function doSomething(vars){
var that = this,
red = 'blue',
up = 'down',
one = 2;
makeAsync(that,red,up,one,function(err,res){
return makeDeep(res);
}
}
}
はい、実際の詳細よりも概念に重点を置いているため、例は不自然です。それらは、3 重にネストされたコールバックである場合もあれば、ある種の内部コールバックを使用する場合もあります。ほとんどの場合、これを実現する方法があるかどうかを知りたいだけです。
そうでない場合、ユーザーに特定のライブラリを提供し、ライブラリに戻してもらう場合、どうすればユーザーのために機能させることができますか?
私の目標は、ASP.NET スタイルの ActionResult に似たものを複製することであり、Q、ファイバー、または約束を使用するという考えにはオープンですが、非同期コールバック時にそれを取得するための呼び出しの周りに何かが欠けています使用されている。