当前位置: 首页 > 知识库问答 >
问题:

返回setTimeout[duplicate]中的值

东方灵均
2023-03-14

我正在尝试返回在setTimout中计算的值。但好像我拿不出这个值。我读到要做到这一点,我必须用promise。我是否必须像下面这样使用它:https://italonascimento.github.io/application-a-timeout-to-your-promissions/?

renderTeaserBackground = () => {
    return setTimeout(function() {
        this.setState({ teaserAnimCount: this.state.teaserAnimCount + 1 });
        let teaserBackground = teaserBgImg[this.state.teaserAnimCount];
        console.log(teaserBackground);
    }.bind(this), this.state.teaserAnimDuration * 1000);
    return 'teaserBackground';
}

共有1个答案

微生昌胤
2023-03-14

你可以用一个promise!

renderTeaserBackground = () => new Promise(res => {
    setTimeout(_ => {
        this.setState({teaserAnimCount: this.state.teaserAnimCount + 1});
        let teaserBackground = teaserBgImg[this.state.teaserAnimCount]
        res(teaserBackground) //Return it here!
    }, this.state.teaserAnimDuration * 1000);
})

若要在外部使用此功能,您可以执行以下操作:

const mainLogic = _ => {
    return renderTeaserBackground().then(teaserBackground => {
        /* Use teaserBackground as you need! */
    })
}
const mainLogic = async _ => {
    const teaserBackground = await renderTeaserBackground()
    /* Use teaserBackground as you need! */
}
 类似资料:
  • 我想这样做: js中是否有一种方法可以调用同步代码中的函数,并仅在我的controlVar变为1时返回值? 这不应该阻止,因为当我使用setTimeout时,主循环应该能够控制,但是如果阻止对我来说并不重要。 谢谢

  • 我想在这里的蓝色阴影区找到31号。所以,我输入了代码。 (标记为31的框的xpath是) 但是我明白 我该怎么做才能得到31号?^^

  • 我有一个函数,它调用一些服务并返回响应。如果响应为FALSE,它将等待1秒再次询问服务(然后可能返回TRUE)。 如何调用我的函数“checkService()”一次,并获得真正的值?(第一次或第二次尝试,由函数决定)我在函数内设置了RET值,但函数总是返回第一次RET,因为setTimeout是异步的。 换句话说,我需要一些“睡眠”技巧,或者任何解决方案(也可能是jQuery)。

  • 这是我的问题 我有一个充满国家代码的JSON文件,以及一个获取随机国家代码的函数,如下所示: 在另一个函数中,我调用上面的函数,并尝试将变量存储到另一个变量中,以便在新函数中可用。 谢谢你的帮助。

  • 考虑这个代码 我做了一个包装器来延迟的方法调用是否有办法从setTimeout内部的回调中检索值,即从?

  • 我有下面的函数,它可以正确地从响应中提取图像的前缀和后缀,并生成一个可变的结果,其中包含场馆图像的url。然而,当我返回结果时,我一直没有定义。这里出了什么问题?