我真的在互联网上搜索了很长时间才找到这个问题。我只想在之前调用的函数结束时运行代码。让我来解释一下这个例子:
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:03:37
JavaScript不提供对变量的并发访问,refreshID将在您将id设置为1之前完全执行。
发布于 2013-11-01 18:03:42
你可以使用回调:
function refreshID(doWhateverElse){
//refresh the div
doWhateverElse();
}
function postID(){
//some code
refreshID(function() {
id=1;
} );
}作为参数传递给refreshID的函数将仅在刷新div后运行。
发布于 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
复制相似问题