0

Facebook 集成有点问题。

当我的用户点击一个链接时,一个函数会检查用户是否登录到 Facebook。如果他们没有登录,我设置一条数据,然后运行 ​​Facebook 登录的东西。当 Facebook 返回他们登录时,我会检查存储的数据并运行他们选择的原始功能。

问题:

Facebook 功能运行两次。他们的留言板上有一些关于这个问题的评论,但似乎这是自 connect 开始以来一直存在的问题,并且没有得到解决。

所以,我不想等待 Facebook。我有什么办法可以防止该函数多次调用我的函数?

我可以设置一些说“运行一次”的东西吗?问题是一旦它运行一次,如果用户再次点击,我将需要再次运行它,所以我不能完全禁用该功能(即使这是可能的)。

4

1 回答 1

1

这是相当骇人听闻的,但它应该可以解决 Facebook 调用你的函数两次的问题。由于没有代码,我将根据我的解决方案进行一些补充。另外,我假设 facebook 登录代码有一个回调(否则它会如何调用您的函数两次?)。

// This function is what is called when the link is clicked
// funToRun - the function that should be run after login is confirmed.
// params - parameters to pass to fToRun, as an array
clickWrapper = function(funToRun, params)
{
    // Keeps track of the state of the click
    var doFunction = true;

    var callback = function()
    {
        if (doFunction)
        {
            funToRun.apply(this, params);
            doFunction = false;
        }
    }

    // The facebook 
    facebookLogin(callback);
}

在此解决方案中,您将要运行的函数包装在只运行一次的回调中,因为 doFunction 将阻止未来的回调执行任何操作。但是,每次用户点击时它至少会运行一次,因为 doFunction 是在本地管理的(因此每次点击都为真)。

于 2009-03-05T05:24:43.070 回答