gpt4 book ai didi

javascript - 等待响应再返回

转载 作者:搜寻专家 更新时间:2023-11-01 00:06:51 25 4
gpt4 key购买 nike

对于我正在开发的应用程序,我们使用服务器端 React 渲染和 Redux 存储,我们需要与我们的 API 进行通信。这一切都很好,但对于某些 View ,我需要数据将其呈现给浏览器之前。我正在使用 react-fetcher在渲染之前执行一个函数并使用静态测试数据这非常有效。但是一旦我想使用来自 API 的数据,我就迷路了。一切都是异步的,但这意味着我的应用程序会在我从我的 API 返回结果之前呈现。

我的代码是这样的:

function getData(apiToken, dispatch) {
superagent.get('http://api.url/endpoint')
.set('x-api-token', apiToken)
.end((err, res) => {
dispatch({
type: 'MY_STORE_ACTION',
data: res.body
});
});
}


@prefetch(({ dispatch, apiToken }) => getData(apiToken, dispatch))

当然,这是行不通的,因为 end 是一个异步回调,我的应用程序没有等待它。

可能值得一提的是,我对 ECMAScript 和 NodeJS(来自 PHP)的世界还很陌生,所以也许我的思维方式完全错误 ;-)

最佳答案

根据 react-fetcher 文档,您应该使用 getData 函数调用 dispatch。

我会尝试以下方法:

function getData(apiToken) {
// prefetch expects you to return a promise
return superagent.get('http://api.url/endpoint')
.set('x-api-token', apiToken)
.end((err, res) => {
return {
type: 'MY_STORE_ACTION',
data: res.body
};
});
}

@prefetch(({ dispatch, apiToken }) => dispatch(getData(apiToken))

并确保您按照上述 promise 兑现 promise 。根据文档:

The @prefetch decorator is for universal data, while @defer is for data that is only required on the client. They each accept a function that returns a promise.

关于javascript - 等待响应再返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33824160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com