Javascript:无法更改全局变量值

时间:2013-12-30 13:44:35

标签: javascript facebook facebook-graph-api global-variables scope

FB.api(...,function (..){
  var a = 0 ;
  FB.api(...,function (l){
         a = l.data.length;
  });
     alert(a) ;     
});

显示的值为零! 不应该给一个值l.data.length?! 如果我有警报(a);在a = l .data.length之后; 它的工作:/

更新:

因为FB.api是异步的还有其他任何修改方法吗?

4 个答案:

答案 0 :(得分:1)

FB api是异步的。

如果在更改其值后需要使用变量,请向函数发送回调并在回调中获取变量。

var callback = function(){
  alert(a);
}
FB.api(...,function (l, callback){
         a = l.data.length;
         callback();
  });

答案 1 :(得分:1)

FB api是异步的。所以你应该在你的回调函数中提醒a的值

function (l){
     a = l.data.length;
     alert(a);
})

答案 2 :(得分:0)

它的异步; 所以到时候

function (l){
     a = l.data.length;
})

执行警报(a)已经执行过。

编辑: 我们应该在变量a设置在同一个函数之后编写下一个操作

function (l){
     a = l.data.length;
     nextThing1();
     nextThing2()
})

答案 3 :(得分:0)

a = l.data.length在回调函数中,它将在调用回调函数时执行。

但是alert(a)将在FB.api之后立即执行。