Javascript 如何在继续之前等待graphQL中的查询完成?
我在下面有一个代码,在继续执行其余代码之前,我想先完成Javascript 如何在继续之前等待graphQL中的查询完成?,javascript,reactjs,asynchronous,async-await,graphql,Javascript,Reactjs,Asynchronous,Async Await,Graphql,我在下面有一个代码,在继续执行其余代码之前,我想先完成doSomethingFirst(): async doSomething() { const response = await doSomethingFirst(); // get the response from this first if(response) { // rest of the code } } async doSomethingFirst { const respo
doSomethingFirst()
:
async doSomething() {
const response = await doSomethingFirst(); // get the response from this first
if(response) {
// rest of the code
}
}
async doSomethingFirst {
const response = await client
.query({
query,
fetchPolicy: "network-only",
variables: {
someVariable: value
}
})
.then(response => {
console.log(response);
})
.catch(err => {
// error
});
return await response;
}
但是,
doSomething()
中的响应返回为undefined
。此结构有什么问题?您应该返回响应。不管怎样,你可以这样做:
doSomethingFirst() {
return client
.query({
query,
fetchPolicy: "network-only",
variables: {
someVariable: value
}
})
}
async doSomething() {
try {
const response = await doSomethingFirst();
if (response) {
// rest of the code
}
}
catch (err) {
console.log(err)
}
}
您可能想知道的几件事:
doSomethingFirst
中,您使用的是wait
和链接。然后您不必这样做,因为它们是相同的
doSomethingFirst
一个非异步函数,因为doSomething
是一个异步函数,您可以从doSomethingFirst
返回承诺,并在doSomething
内等待响应,也可以像我一样使用try-catch块进行错误处理试一试,通常对我有效,如果不是的话,也许问题出在别处,它没有返回实际数据
async doSomethingFirst {
const response = await client
.query({
query,
fetchPolicy: "network-only",
variables: {
someVariable: value
}
})
.then(response => { return response.json();})
.then(responseData => {console.log(responseData); return responseData;})
.catch(err => {
// error
});
}这些礼物都在哪里?在教室里?