jquery的done和then區別

2022-04-04 15:08:30 字數 1010 閱讀 4095

jquery的deferred物件的done方法和then方法都能實現鏈式呼叫,但是他們的作用是有區別的,then方法中如果你傳遞的方法有返回值,那麼他會傳遞給下乙個鏈式呼叫的方法。而done方法與此相反,你傳遞的方法就算有返回值,done方法也不會把你的返回值傳給下乙個鏈式呼叫的方法的,話不多說,直接上例項:

var defer =jquery.deferred();

defer.done(

function

(a,b)).done(

function

( result ) ).then(

function

( a, b ) ).done(

function

( result ) ).then(

function

( a, b ) ).done(

function

( result ) );

defer.resolve( 2, 3 );

輸出結果如下:

結果分析:

第乙個done和第二個done都返回了defer.resolve( 2, 3 )

done中callback的返回值不會被傳遞

第二個done只有乙個引數,接收了defer.resolve( 2, 3 )的第乙個引數2,所以result是2

第乙個then接收defer.resolve( 2, 3 ),接收兩個引數,result是6,同時新建乙個deferred object,傳遞result給deferred object

第三個done接收到了這個新的deferred object和傳遞的result,列印結果是6,並把這個新的deferred object傳遞給第二個then

第二個then現在接收新的deferred object,它只有乙個引數,是result,所以引數b沒有定義,返回的結果是nan,同時又新建乙個deferred object

第四個done接收乙個新建的deferred object,傳遞的引數是nan,列印的結果自然就是nan

jquery中done與then方法區別

jquery的deferred物件的done方法和then方法都能實現鏈式呼叫,但是他們的作用是有區別的,then方法中如果你傳遞的方法有返回值,那麼他會傳遞給下乙個鏈式呼叫的方法。而done方法與此相反,你傳遞的方法就算有返回值,done方法也不會把你的返回值傳給下乙個鏈式呼叫的方法的。即 don...

在EditText中開啟軟鍵盤的 Done 按鈕

整理自 在edittext中,可以使用setimeoptions 方法來來開啟軟鍵盤的 done 按鈕。示例 如下 edittext.setimeoptions editorinfo.ime action done 介面如下 按下 done 按鈕的預設行為是關閉軟鍵盤,但是我們可以通過 editte...

jQuery的選擇器和jQuery轉型

function 利用id a3獲取jquery例項 id選擇器 a3 click function 類選擇器 c1 click function 包含選擇器 p a click function 組合選擇器 號分開 span,h1 click function 第二個引數的作用 在div標籤內部尋...