前几天群里的朋友问我,requirejs支不支持异步,我的第一反应是肯定支持啊。然后它给出了栗子。
index.html:
<script data-main="main.js" type="text/javascript" src="require.js"></script>
main.js
(function(){
require.config({});
define(function(require){
setTimeout(function(){
var a = require('a');
console.log(a);
}, 8000);
})();
看起来好像没什么问题。
其实: setTimeout里面的函数,分开写你们就可能明白了。
(function(){
require.config({});
define(function(require){
function funA(){
var a = require('a');
console.log(a);
}
setTimeout(funA, 8000);
})();
函数是需要先解释再执行的,所以这里检查a是否已定义触发了require
要怎么样搞呢?
(function () {
require.config({});
define(function (require) {
function funA() {
require(['a'],function(a){
console.log(a)
});
}
setTimeout(funA, 8000);
})
})();
就这样,这里会等执行funA的时候才会执行 require了。
全文完。