gpt4 book ai didi

JavaScript 解析

转载 作者:行者123 更新时间:2023-11-28 12:50:04 28 4
gpt4 key购买 nike

我有这段代码:

$(document).ready(function() {
//<![CDATA[
var who;

FB_RequireFeatures(["Api"], function(){

var who = api.get_session().uid;
alert(who);

});

alert("the uid is: "+who);

//]]>
});

问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who 的值是未定义的。

我做错了什么?

最佳答案

FB_RequireFeatures 函数似乎正在进行异步调用,因此您没有做任何错误,这就是它的工作方式 - 在请求返回之前调用警报。

您的代码设计方式必须确保仅在请求完成后才调用依赖于 FB_RequireFeatures 函数结果的代码。您可以在回调中调用另一个函数,例如:

var who;

$(document).ready(function() {
FB_RequireFeatures(["Api"], function() {
who = api.get_session().uid;
doSomeOtherStuff();
});
});

function doSomeOtherStuff() {
alert("the uid is: " + who);
}

现在,仅在 FB_RequireFeatures 函数完成后才调用 doSomeOtherStuff 函数,并且您应该在 doSomeOtherStuff 函数内执行以下所有代码 - 这显然,您可以命名为任何您想要的名称。

我将 who 变量移出了 Ready block ,以使其保持在 doSomeOtherStuff 函数的范围内,并从内部函数,以便您引用原始变量而不是创建新变量,否则两者是相同的。

关于JavaScript 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172668/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com