好的,我有一个div:
<div class="moreStuff"> <p>stuff in here matters</p></div>
和一些Javascript:
weiredFunction(takes,some,values);
这个“weirdFunction()”需要一些值,做一些非重要的东西并将它添加/附加到div.moreStuff。
直接在“WeirdFunction()”之后我有自己的功能:
stuffIWantToDo(...);
“stuffIWantToDo()”检查div.moreStuff并根据其中的数据做出反应。
问题是“weirdFunction()”需要大约300ms来完成它的商务并将它的数据添加到div .moreStuff但是我的函数“stuffIWantToDo()”在300ms之前完成;这意味着当“stuffIWantToDo()”运行时,div.moreStuff中没有任何内容。
我想阻止“stuffIWantToDo()”运行,直到“weirdFunction()”将数据附加到div.moreStuff。
答案 0 :(得分:0)
尝试使用stuffIWantToDo()作为weiredFunction()中的回调函数
function weiredFunction(callback) {
// finish the weird thing
// Call the callback
callback('some','stuff','there');
}
function stuffIWantToDo(a, b, c) {
// I'm the callback
alert(a + " " + b + " " + c);
}
weiredFunction(foo);
答案 1 :(得分:0)
如果你正在使用一些jQuery调用,那么我们需要看到它,就像@tymeJV已经说过的那样,看起来好像你有一些async
代码涉及weiredFunction function
如果没有,您的代码必须正常synchronously
,并且您唯一需要的就是将stuffIWantToDo function
称为回调,或者在第一个代码的末尾。
如果这些对您没有意义,那么请使用旧的且知名的setTimeout javascript function
像
function weiredFunction(takes,some,values){
/* some weired stuff here */
setTimeout(function() {
stuffIWantToDo(...);
}, 300);
}
答案 2 :(得分:0)
如果我理解你的话,你就不可能改变weiredFunction。基于这个假设,你必须编写一个小的基于区间的观察者,一旦内容发生变化就会激活你的函数。
var stuffContent = '';
window.setInterval(function() {
var currentStuffContent = $('.moreStuff').html();
if(currentStuffContent == stuffContent) return;
stuffContent = currentStuffContent;
stuffIWantToDo();
}, 50);
但是,如果您只是在weiredFunction中触发stuffIWantToDo作为回调,那将是最好的。