2013-06-04 104 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

相关问题