Node:异步开发小贴士

Node:异步开发小贴士

使用匿名函数保存全局变量

来看看一段代码:

function asyncFunction(callback){
    
    
    setTimeout(callback,200);
}
let color = 'blue';
asyncFunction(()=>{
    
    
    console.log(`The color is ${
      
      color}`);
})
color = 'green';

相信大家都知道以上代码的输出肯定是:The color is green.

因为这个例子是异步的,在console.log执行之前,color已经被重新赋值为’green’,因此才会得到与预期不符的结果。

为了解决这一问题,可以利用JavaScript的闭包来保存全局变量

function asyncFunction(callback){
    
    
    setTimeout(callback,200);
}

let color = 'blue';
(color=>{
    
    
    asyncFunction(()=>{
    
    
        console.log('The color is',color );
    });
})(color);

color = 'green';

使用闭包后,color就变成了闭包里的本地变量,不会受到闭包外变量改变的影响。

猜你喜欢

转载自blog.csdn.net/yivisir/article/details/107831076