等待功能完成

时间:2014-12-16 09:54:25

标签: javascript

我有一个名为opslaanMelding()

的函数

在这个函数中我插入一个带有一些文本的div,我想在3秒后不显示它。 我认为另一个功能是刷新页面,所以超时不起作用

是否有任何想法等待此功能完成然后让他继续?

这是我的代码:

innerDiv.innerHTML = term;
innerDiv.className = 'className';
innerDiv.id = 'myId';
console.log(innerDiv.getWidth());
innerDiv.style.marginLeft =  width- 80 + "px"; 
innerDiv.style.marginTop = "7px";
$('header').insert({after: innerDiv})
setTimeout(function() {
   // display none after 3 secs
    window.document.getElementById('myId').style.display = 'none';
},3000); 

1 个答案:

答案 0 :(得分:3)

  

任何等待此功能完成然后让他继续的想法

如果不锁定浏览器的用户界面(和/或收到“慢速脚本”错误),您无法阻止该函数返回三秒钟,这当然会阻止您的内容出现,因此不会对您执行任何操作想。

相反,让你的函数接受它在三秒钟启动时调用的回调,并将其后面的任何内容放入该回调中,而不是立即运行它。

,例如,而不是:

yourFunction();
doSomething();
doSomethingElse();

制作

yourFunction(function() {
    doSomething();
    doSomethingElse();
});

...并按如下方式修改您的功能:

function yourFunction(callback) {   // **** Note the `callback` argument
    innerDiv.innerHTML = term;
    innerDiv.className = 'className';
    innerDiv.id = 'myId';
    console.log(innerDiv.getWidth());
    innerDiv.style.marginLeft =  width- 80 + "px"; 
    innerDiv.style.marginTop = "7px";
    $('header').insert({after: innerDiv})
    setTimeout(function() {
        // display none after 3 secs
        window.document.getElementById('myId').style.display = 'none';

        // *************** Do the callback
        callback();
    },3000);
}