js 变量作用域的问题


funcion outFun () {

    let response = [];

    funAAA(a,b,c,function(err,res) {
    
        if(err == 0 ){
            let result = {name:"111",ok:"0"};    
            response.push(result);
        }
        else if(err ==1) {
            let result = {name:"222",tel:"1"};
            response.push(result);
            //response.push({...result});   也不行
            //response.push(JSON.parse(JSON.stringify(result)));也不行
        }
    });

    console.log(response);   // []   空的。。,这

}

这种情况何解?

阅读 1.4k
1 个回答

image.png
这一坨在回调函数里啊兄弟,是异步的,这一坨没有下面那个console语句跑的块,不行你在那一坨里console试试,看谁先输出。

image.png
处理异步回调方法很多,不过就现在这个情况,
在这个地方加个函数判断下就行了,意思就是每循环一次都判断一下跑完了没,常规做法。比如:
run()
.....

function run(){
    if(response.length  == 遍历的数组的长度){
        //比较有针对性的处理方式
        ....
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题