等待数据添加到Div

时间:2014-07-10 21:18:49

标签: javascript html

好的,我有一个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。

3 个答案:

答案 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);

检查此SO帖子:Create a custom callback in JavaScript

答案 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作为回调,那将是最好的。