我在Facebook整合方面遇到了一些问题。
当我的用户点击链接时,功能会检查用户是否已登录Facebook。如果他们没有登录,我会设置一个数据,然后运行Facebook登录的东西。当Facebook返回他们登录时,我会检查存储的数据并运行他们选择的原始功能。
Facebook功能运行两次。他们的留言板上有一些关于这个问题的评论,但是从连接开始以来这似乎是一个问题,并没有得到解决。
所以,我不想等Facebook。有什么方法可以阻止函数不止一次调用我的函数吗?
我可以设置“运行一次”的内容吗?问题是,一旦它运行一次,如果用户再次点击,我将需要再次运行它,所以我不能完全禁用该功能(即使这是可能的)。
答案 0 :(得分: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是在本地管理的(因此每次点击都是如此)。