簡體   English   中英

如何在繼續之前等待graphQL中的查詢完成?

[英]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)
  }
}   

您可能想知道的一些事情:

  1. doSomethingFirst您正在使用await並鏈接.then您不必這樣做,因為它們是相同的。
  2. 我做了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM