私のプロジェクトでは、異なる引数で異なる種類の関数を持つシナリオがあります。これらの引数の1つにコールバック関数があります。また、関数に引数がない場合もあります。以下に示すように:関数の引数に関係なく約束を返すラッパー関数
abc(string, function, number)
aaa(function, string)
bcd()
xyz(function)
cda(string, number, function, string)
Iにかかわらず、上記の機能の不規則性の、機能が約束を返すべきであることを、このような機能を記述する必要があります。
例:
// Assume $q has been injected
var defer = $q.defer();
function returnPromise(functionName, functionArgumentsInArray){
defer.resolve(window[functionName].apply(null, functionArgumentsInArray));
return defer.promise;
}
あなたが見ることができるように、上記の関数は、コールバック関数が、単に機能を解決しません。
注:関数には、最大で1つの関数引数またはなしがあります。
私は次のようにそれぞれのケースごとに個別に行うことができます知っている:
function returnPromise(){
var defer = $q.defer();
abc("hey", function() {
defer.resolve(arguments);
}, 123);
return defer.promise;
}
しかし、私はそのようなすべての機能のための共通のラッパーを探しています。
パラメータのどれがコールバックを受け取るかを知ることができない場合は、汎用ラッパーを記述することもできません。 – Bergi
@Bergi私は関数型を調べるために引数と型を使って何かを行うというわずかな考えがあります。しかし、次に何をするか分からない。 –
関数をラッピングするときに引数はまだありません。ラッパーが呼び出されると、コールバックは省略されます。もしあれば、それがどの位置にあるかを知る機会はありません。 – Bergi