繁体   English   中英

基于Promise的异步setTimeout吗? 诺言 { <pending> }错误

[英]Async setTimeout on Promise based? Promise {<pending>} Error

因此,我试图使函数与异步计时器逻辑一起工作,在计时器停止后,我需要在该逻辑上执行computeResult (例如,func)。 为了控制setTimeout异步逻辑,我使用了基于Promise的asyncFunc函数,但是使用它时,它总是返回Promise {<pending>}

在这种情况下我跌倒在哪里? 谢谢。

附言:我还在SoF上看到了有关此主题的各种帖子,但这对我没有帮助。 不要只是为了增加您在SoF上的经验而阻止我的问题

const computeResult = () => {
  return 'sdas'
}

const asyncFunc = () => new Promise(
   r => setTimeout(r, 1000))
     .then(() => computeResult()
);

export default asyncFunc

不100%不确定您要做什么。

但是以下可能是您的追求。

 const computeResult = () => { return 'sdas' } const asyncFunc = () => new Promise(resolve => setTimeout(() => resolve(computeResult()), 1000) ); console.log("Wait for computeResult"); asyncFunc().then(r => console.log(r)); 

在这种情况下,您会写得很好,但请三思而后行。 您在解决Promise后忘记执行该Promise ,这就是为什么它停留在<pending>状态。

因此,在另一个词语只写后asyncFunc调用.then尾巴在像下方式asyncFunc().then(your_sersult => ddoSomething(your_sersult))

就这样。 你会得到你想要的:)

您可以在MDN网站上阅读有关它的更多信息: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM