我的React应用中有一个api调用
function apicall(input) {
return fetch(url)
.then(response =>
response.json())
}
这是从另一个文件调用的
apicall(input).then(responseData => {
//responseData is an array
//some action-> responseData.map(
})
我觉得这种方法不正确,我只希望apicall返回数据。
想法是这样的:
致电apicall
获取数据
将响应分配给变量
循环响应(而不是在then
内部进行响应)
答案 0 :(得分:1)
在处理Promise
时,您必须使用.then
语法或async/await
方式。
您可以做这样的事情
async function apicall(input) {
return fetch(url)
.then(response =>
response.json())
}
// in some other file
(async function(){ // enclosing function must be async
const data = await apicall(input)
})
答案 1 :(得分:0)
您的方法是正确的,只是从正确的位置返回数据,只需要使用async/await
,
async function apicall(input) {
await fetch(url)
.then(response =>
response.json()
)
.then(response => {
console.log(response);
return response;
})
}
您的apicall
应该是
const returnData = apicall(input);
//do your operations on returnData here
答案 2 :(得分:0)
如果要同步加载数据,那么这是最好的方法。
否则,如果您使用async/wait
方法,则主线程将被阻塞,直到得到响应为止。如果您要创建服务器渲染的页面,则这种(async/wait
)方法很好。
对于async/wait
方法,请遵循@Prithwee Das的回答。