Javascript 具有异步操作的函数,该操作可用于脚本标记并作为独立操作
假设我在一个文件中有一个函数:Javascript 具有异步操作的函数,该操作可用于脚本标记并作为独立操作,javascript,Javascript,假设我在一个文件中有一个函数: foo.js: (function(){ return { loadStuff: function(callback){ setTimeout(function() { callback() }, 2000) } } })() 我必须以两种不同的方式运行loadStuff: 首先:当我得到javascript引擎本身加载的文件时(比如通过XHR和eval),我可以通过回调调用它(这已经是可能的) 第二
foo.js:
(function(){
return {
loadStuff: function(callback){
setTimeout(function() { callback() }, 2000)
}
}
})()
我必须以两种不同的方式运行loadStuff
:
- 首先:当我得到javascript引擎本身加载的文件时(比如通过XHR和
),我可以通过回调调用它(这已经是可能的)eval
- 第二:当它加载到脚本标记中时,它仍然应该自动调用
,尽管这次没有回调loadStuff
loadStuff
双向工作?但是我不想调用两次loadStuff
:因此,对于第一种情况,我希望使用callback调用它,而不是在第一次加载函数(不使用callback)然后再次使用callback调用它。我只需要它运行一次loadStuff
,并进行回调
所以
- 当
时,它应该自动调用loadStuff
- 当函数为string时,我执行以下操作:
fn = eval(fnStr) fn.loadStuff(function(){ console.log("stuff loaded") })
loadStuff
一次
foo.js:
(function(){
var called = false,
loadStuff = function(callback){
called = true;
setTimeout(function() { callback && callback() }, 2000)
};
setTimeout(function(){!called && loadStuff();}, 13); //autolaunch if needed
return {
loadStuff: loadStuff
}
})()
所以基本上你是说你想叫它两次而不是叫它两次。。。我不明白。