我对此进行了搜索,但没有找到任何特定于我需要的内容。如果有,请在这里分享。
我正在尝试创建一个在各种组件中调用的通用服务。由于它是一个从外部源请求数据的函数,因此我需要将其视为异步函数。问题是,编辑器返回消息“’await’ 对该表达式的类型没有影响”。由于还没有数据,应用程序确实崩溃了。
People.js 调用服务 requests.js
import React, { useEffect, useState } from "react";
import requests from "../services/requests";
export default () => {
// State
const [ people, setPeople ] = useState({ count: null, next: null, previous: null, results: [] });
// Tarefas iniciais
useEffect(() => {
carregarpeople(1);
}, []);
// Carregando os dados da API
const carregarpeople = async (pageIndex) => {
const peopleResponse = await requests("people", pageIndex);
// This line below needs to be executed but it crashes the app since I need to populate it with the data from the function requests
// setPeople(peopleResponse);
}
return (
<div>
{
people.results.length > 0 ? (
<ul>
{
people.results.map(person => <li key = { person.name }>{ person.name }</li>)
}
</ul>
) : <div>Loading...</div>
}
</div>
)
}
这是 requests.js,它从 API 返回 json
export default (type, id) => {
console.table([ type, id ]);
fetch(`https://swapi.co/api/${type}/?page=${id}`)
.then(response => response.json())
.then(json => {
console.log(json);
return json;
})}
原文由 Raphael Alvarenga 发布,翻译遵循 CC BY-SA 4.0 许可协议
await
仅当您将其与承诺一起使用时才有用,但requests
不返回承诺。它根本没有返回语句,因此它隐式返回undefined
。看起来你的意思是让它返回一个承诺,所以这是你的代码,其中添加了返回:
ps,如果您更喜欢使用
async
/await
来执行此操作,它看起来像: