在resolver functions中,可以使用async/await或者Promise来解决这个问题。例如:
const { ApolloServer, gql } = require('apollo-server');
// 定义schema
const typeDefs = gql`
type Query {
hello: String
}
`;
// 模拟一些异步任务
const fetchHello = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve('Hello world!');
}, 1000);
});
};
// 定义resolver
const resolvers = {
Query: {
hello: async () => {
// 等待异步任务完成
const data = await fetchHello();
return data;
},
},
};
// 创建server
const server = new ApolloServer({ typeDefs, resolvers });
// 启动server
server.listen().then(({ url }) => {
console.log(`Server ready at ${url}`);
});
在上面的示例中,hello()
resolver 使用了async/await来等待 fetchHello() 异步任务完成,并返回结果。这样就能保证data有值并且不会是undefined。
上一篇:ApolloGraphQL-使用从服务返回的值-Promise问题
下一篇:ApolloGraphQL-TypeError:Cannotreadproperty'findOrCreateUser'ofundefined