[英]How to wait for query in graphQL to finish before proceeding?
我在下面有一個代碼,我想在繼續執行其余代碼之前完成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
您正在使用await
並鏈接.then
您不必這樣做,因為它們是相同的。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
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.