我真的在互联网上搜索了很长时间才找到这个问题。我只想在之前调用的函数结束时运行代码。让我来解释一下这个例子:
var id=0;
function refreshID(){
    //refresh the div
}
function postID(){
    //some code
    refreshID();
    id=1;    
}通过调用函数postID,将执行函数refreshID,然后将变量id设置为1。但我认为在函数refreshID()完全执行之前,变量已设置为1。所以我的问题是:当另一个函数结束时,当它完全执行时,如何运行代码(在本例中更改变量的值)。
问候
发布于 2013-11-01 18:06:03
JavaScript是单线程的,因此可以保证代码线性运行--它永远不会跳过代码行。
在您的示例中,id = 1总是在refreshID返回之后执行。让事情变得更复杂的是,refreshID可能会将事情设置为异步完成,例如使用setTimeout,在这种情况下,refreshID将在回调运行之前返回。在这种情况下,将回调传递给函数或使用promises可能很有用。
例如:
var id = 0;
function refreshID(cb) {
    setTimeout(function () {
        // your work
        // ...
        cb();
    });
}
function postID(){
    // some code
    refreshID(function () { id = 1; });
}https://stackoverflow.com/questions/19724494
复制相似问题