2013-06-04 103 views
2

有沒有一種方法來阻止JavaScript,直到requirejs加載文件?使requirejs等待,直到文件已經加載之前繼續

我認爲做下面的工作是可行的,因爲我沒有回調。

var requireFile = require(['example']); 

但它仍然是異步的。

如果我確實有一個指定的回調是有阻止,直到加載示例,然後執行回調。

例如。

require(['example'], function(){ 
    console.log('hello'); 
}); 
console.log('world'); 
因此

控制檯應該是:

你好

-world

我看到

-world

你好

回答

0

您不能阻塞,直到它返回。但你通常不需要。

你可能有一些代碼依賴於從「需要」的回報,代碼需要在回調去(或者在回調中得到調用)

它可以是一個問題,當你已經有一個一堆代碼,但它是唯一的方法來做到這一點。

有時你可以讓其他代碼不運行,直到它看到它需要加載的東西。

有時您可以跳過它運行,稍後它會被調用。有時你必須設置一個計時器,不斷尋找那個「某事」,然後暫停一下,如果不是的話。

+1

是的,我有代碼需要回調執行。將代碼移入回調並不是一個真正的選擇,因爲我們的框架工作的方式 – Decrypter

+0

感謝您的建議。有沒有辦法來檢查requirejs是否完成加載? – Decrypter

+0

最好的方法是查看它加載的內容是否存在並處於活動狀態。通常它在窗口或文檔中定義了一些東西,或者爲某些DOM元素添加了一些值或函數。檢查那些正在活動的人。 –

4

你可以將你想要延遲的代碼包裝到一個函數中,然後從require回調中調用該函數。

require(['example'], function(){ 
    console.log('hello'); 
    world(); 
}); 

function world() { 
    console.log('world'); 
} 
+4

這種方法就像冠軍一樣。放下一點點異步和[寶貝,你有燉湯](https://www.youtube.com/watch?v=Sr2PlqXw03Y) – deepelement

相關問題