【问题标题】:Calling a callback function that returns a setTimeOut callback javascript调用返回 setTimeOut 回调 javascript 的回调函数
【发布时间】:2022-01-03 07:37:30
【问题描述】:

我尝试搜索此内容,但找不到与我需要的案例相匹配的内容。

我这里有这个不能修改的功能:

function generate() {
  const delay = 7000 + Math.random() * 7000;
  const num = Math.random();

  return (callback) => {
    setTimeout(() => {
      callback(num);
    }, delay);
  };
}

当我尝试调用 generate() 之类的函数时,我得到一个错误。我也尝试过使用基于承诺的方法,例如:

    const result = await generate();
    return result;

但是当我这样做时,返回的结果是一个承诺,我无法将其呈现到 JSX(我正在使用 React)。

JSX 组件代码(目前用于调试目的):

const Test = () => { 
return <>{generate()}</>;
};

如果有任何建议,我将不胜感激。谢谢!

【问题讨论】:

  • 错误是什么? generate 函数是什么?
  • 听起来你想return new Promise(generate())
  • "我无法渲染到 JSX(我正在使用 React)。" - 如果代码不起作用,请向我们展示该代码。 (你甚至可能不需要承诺或异步/等待反应!)而且看起来你删除了generate函数代码的第一行

标签: javascript reactjs async-await callback settimeout


【解决方案1】:

这绝不是为了解决你的问题,而只是为了理解这个逻辑。也许它可以帮助解决问题。

generate() 在这种情况下返回一个设置超时的函数。

   typeof generate() = "function"
  // this is then the function we use to run the long running function

  const generateFunction = generate();

  //we then create the callback handler function
  const callback = () =>  {...}
  //when executed it will set the timeout to the random delay and display the result in your component of oyur choice.
  generateFunction(callback);

fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多