javascript - 从 setTimeout 返回一个值

标签 javascript reactjs promise settimeout

我正在尝试返回在 setTimout 中计算的值。但似乎我无法获得这个值。我读到要做到这一点我必须使用 promise 。我是否有义务像这样使用这个例子:https://italonascimento.github.io/applying-a-timeout-to-your-promises/

我的代码:

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';
}

谢谢

最佳答案

您可以使用 Promise!

ES6 方式 - 标准 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! */
    })
}

ES7 方式 - Harmony async/await

const mainLogic = async _ => {
    const teaserBackground = await renderTeaserBackground()
    /* Use teaserBackground as you need! */
}

关于javascript - 从 setTimeout 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48894703/

相关文章:

javascript - jQuery 在浏览器中显示 JSON 结果但不显示结果

javascript - 使用获取结果进行另一个获取请求(JS/React)

javascript - 无法使用在 React 中接收 prop 的 require() 方法

reactjs - React Router- 链接不会替换 url

Javascript - 如何使用不在同一范围内的 onClick 事件监听器清除回调内的 setInterval

angular - promise all 将结果转换为对象

javascript - onsubmit ="submitForm();"和 onsubmit ="return submitForm();"有什么区别

javascript - 将 SVG 路径雕刻成一个 Rect,留下一个 "hole"的 rect

javascript - 加快json加载

javascript - q.js : difference between resolve() and fulfill()