javascript - 不重复调用Javascript

标签 javascript

如果在几分钟内进行了多次调用,如何使我的函数不重复多次调用?

var s = 1; 
function foo(x) {
  if (s === 1) {
    console.log('done');
    setTimeout(function(){
      s =1; 
    }, 10000);
  } else {
    s = 2; 
    console.log('no more repeat calling');

  }
}

foo(1); 
foo(2);

我期待结果 -

done 
no more repeat calling

最佳答案

因为 s 永远不会被设置为 2。看来您打算在 if block 中执行此操作,而不是在 else block 中:

if (s === 1) {
    console.log('done');
    s = 2;  // <--- here
    setTimeout(function(){
        s = 1; 
    }, 10000);
} else {
    console.log('no more repeat calling');
}

这样,第一次调用将更新 s 标志,因此后续调用将转到 else block 。

关于javascript - 不重复调用Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934418/

相关文章:

javascript - 用 grunt 替换变量

javascript - 背景没有显示(也许是悬停功能?)

javascript - 然后函数在返回 promise 后不会被调用

javascript - 表达式不起作用

javascript - 将上传的文件发送到 Cypress 的后端

javascript - 使用动态生成的表进行邻居计数

javascript - Iron Router waitOn 在 Chrome 中不起作用

javascript - 这个关键字变成错误的this

javascript - 我不断收到 TypeError : undefined is not a function

JavaScript 日期转换为从设备获取的当前日期?