使用带Recaptcha的Node.js的可变范围问题

时间:2014-03-11 00:09:26

标签: node.js recaptcha

我在Node.js中使用Recaptcha,我在使用某些布尔变量的范围时遇到了一些麻烦。如果我能解决这个问题,Recaptcha将会有效。另外,我没有使用快递。

如果正确评估了recaptcha,则在simple_recaptcha中的函数中将flag设置为true。但是当函数终止时,flag为false并且不再为true。

我想知道我是否可以通过引用来解决此问题?还有其他方法吗?

function processRecaptcha(response){
       ...got IP address ...
       ...set some variables ...
       flag = false; // I have tried both w/o var and with var

       simple_recaptcha(recaptcha_private_key, ip, challenge, response, function(err)    {
            if (err) {
               flag = false;
               console.log('recaptcha code: Incorrect. Flag is: ' + flag);
            }
            else{
               flag = true;
               console.log('recaptcha code: Correct. Flag is: ' + flag);
            }
      });
      console.log('Flag is: ' + flag);
      return flag;

}

1 个答案:

答案 0 :(得分:2)

您的功能正常运行(最有可能),并且由于 simple_recaptcha 调用的异步特性而导致此问题。

您的代码执行此操作:

  1. 它将标志设置为false
  2. 然后启动一些将接收回调的函数(simple_recaptcha()函数)
  3. 然后记录该标志为false。
  4. 有时候,当解决simple_recaptcha时,你的标志设置为true。但原来的功能现在已经退回了。

    根据您的代码和用法,您应该能够将return flag;部分移到simple_recaptcha()回调函数内的某个位置。