今回はdoneとthenの違いと、doneとthenを使用する際の注意点についてお届けします。実際のケースを見てみましょう。
jqueryのdeferredオブジェクトのdoneメソッドとthenメソッドはどちらもチェーン呼び出しを実装できますが、その機能は異なります。thenメソッドで渡したメソッドに戻り値がある場合、それが戻り値に渡されます。 next 呼び出しを連鎖させる方法。渡したメソッドに戻り値がある場合でも、done メソッドはこれに反し、チェーン内で呼び出される次のメソッドに戻り値を渡しません。例:
var defer = jQuery.Deferred();
defer.done(function(a,b){
console.log("a = " + a+"b = " + b);
return a * b;
}).done(function( result ) {
console.log("result = " + result);
}).then(function( a, b ) {
console.log("a = " + a+"b = " + b);
return a * b;
}).done(function( result ) {
console.log("result = " + result);
}).then(function( a, b ) {
console.log("a = " + a+"b = " + b);
return a * b;
}).done(function( result ) {
console.log("result = " + result);
});
defer.resolve( 2, 3 );
結果分析: 最初の完了と 2 番目の完了は両方とも defer.resolve(2, 3) を返しました。 )
2. Done のコールバックの戻り値は渡されません3. 2 番目の Done にはパラメータが 1 つだけあり、defer.resolve(2, 3) の最初のパラメータ 2 を受け取るため、結果は 2 になります 4. 最初の関数は defer.resolve(2, 3) を受け取り、2 つのパラメーターを受け取り、結果は 6 で、新しい遅延オブジェクト
を作成し、その結果を遅延オブジェクト に渡します。新しい遅延オブジェクトと渡された結果。出力される結果は 6 で、この新しい遅延オブジェクトは 2 番目の then6 に渡されます。2 番目のオブジェクトは、結果である新しい遅延オブジェクトを 1 つだけ受け取ります。したがって、パラメータ b には定義がなく、返される結果は NaN であり、新しい遅延オブジェクトが同時に作成されます7 4 番目の Done は新しい遅延オブジェクトを受け取り、渡されたパラメータは NaN で、出力される結果は次のようになります。当然 NaNあなたはこの記事の事例を読んだと思います。あなたはその方法をマスターしました。さらにエキサイティングな情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
jQuery の Validate プラグインが入力値を検証する方法以上が完了とその後の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。