2016-03-05 39 views

回答

2

Updated fiddle

你應該將其從回調done中刪除,因爲它將覆蓋變量:

$.when(htmlOutput(html)).done(function() { 
    console.log(variablex); 
}) 

注意:作爲@ jfriend00在下面的評論中提到,沒有理由在您的情況下使用$.when()。 希望這有助於。

+0

我使用的例子與我在代碼中有所不同,函數htmloutput改變div的'.html()'。我還不知道它是否有所作爲,但我想我不知道真正使用'$ .when()' – xickoh

+1

我有一個蝙蝠時間決定哪個答案應該被標記爲正確的。即使@ jfriend00給出了一個更好的詳細答案,並幫助我理解了'$ .when()'的真正意義,我認爲我最大的困難是找出變量的問題,而不是更好的代碼。 。 所以,謝謝你們,希望你們不要以壞的方式接受@ jfriend00,再次感謝! – xickoh

1

你什麼用$.when()的想法是錯誤的。在這種情況下它沒有地位,因此它不會做你顯然期望它做的事情。

$.when()需要一個或多個承諾傳遞給它。它沒有任何魔法力量來知道它的某些功能何時完成。

加上你的htmlOutput(html)函數調用甚至不返回任何東西,所以我不知道你期望$.when(htmlOutput(html)).done(...)實際上有一個值。

這解釋了爲什麼你現在的代碼沒有做到你所期望的。如果你想獲得進一步的幫助,你將不得不描述你正在努力完成的任務,以及你爲什麼使用$.when()以及不返回承諾的同步功能。

您可以完全去除$.when(),只是有這個,因爲同步的功能,如htmlOutput()塊,直到完整的,所以沒有理由使用承諾或$.when()他們:

function htmlOutput(html){ 
    console.log("first function works") 
} 

function check_content(){ 

    var variablex = "content"; 
    var html = "foo" 

    htmlOutput(html); 
    console.log(variablex); 
} 

check_content(); 
+0

我當然沒有解釋正確。我沒有把它放在JSFiddle中,但在我的代碼中,函數htmlOutput(html)更改了div的.html()。我以爲$ .when + .done會在div更改html後運行該函數......至少它看起來像... – xickoh

+0

@xickoh - 查看我添加的固定代碼。 – jfriend00

+0

我在輸入整個答案之前按下了輸入,我的錯誤,只是編輯了它。 – xickoh

相關問題