私は何年もJasmineを使用していましたが、現在はのコンセプトを使用して実装できるコードを書いています。オプション async params。私はソースを掘り下げようとしましたが、どのようにしてdone()
が動作するのか分かりません。私はこのコードを持っているといいますか:Jasmineの `done()`はどのように実装されていますか?
new Validator({
element: someElement,
validator: function (value, done) {
doSomeStuffAsyncThenCall(done)
}
});
どのように機能しますか?私が壁に当っている部分は、その関数の引数を取得しています。私はthis.options.validator
とバリデーターを得ることができますが、done
が定義されている場合はどうすればとと呼びますか?
@zerkmsあなたは精巧にできますか? –
"私が壁に当っている部分がその機能の議論を得ている"。あなたは実際に何をしたいですか? 'length'を使って関数のアーリーシティを取得し、それを使用することができます.2番目の引数があると常に非同期動作を示していると仮定します。 'toString'を使って、文字列化された関数から必要な値を解析することもできます。 –
@zerkms私は私の質問に述べました。「私はそのソースを掘り下げようとしました...」例えば、これは、長すぎる 'Function.prototype.apply.apply'という非同期呼び出しをキャッチする方法です。それは疑似コードがたくさんあり、どのように動作するのか分かりません。これは、 'done()'のためのテストが添付されたファイルです。https://github.com/jasmine/jasmine/blob/master/src/core/QueueRunner.js –