如果一个语句需要一阵子才能返回,而javascript的语句并不会等你
写在前面的函数体里的语句完全执行完了,甚至都经过了一秒的漫长运算返回结果了,才开始执行后面的语句。
这样的时候,就会出现,你后面需要用到前面返回的变量,那个变量还是null的情况。
比如下面这个代码(简书里输入代码用3个锐音符`开始,3个锐音符`结束)
var port = null;
window.onload = onloadHandler;
function setPort() {
console.log('setPort running')
//port = 3;
setTimeout("port = 123;console.log(port);",1000);
}
function onloadHandler() {
console.log('onloadHandler running');
setPort();
if (port) {
console.log('port exist');
}else{
console.log('port not yet prepared');
}
}
以上代码的输出结果:
onloadHandler running
setPort running
port not yet prepared
port not yet prepared, 这是因为没有等到setPort()返回结果,我们的函数就开始判断 if (port) 了
如果我们想要保证setPort()返回结果后,才开始判断 if (port) ,该怎么做呢?这就可以借助回调函数了
网友评论