我注意到 Visual Studio Code 突出顯示以下函式,讓我知道我可以將其設為異步函式(因為它回傳一個承諾):
const { isLoading, refetch } = useQuery(['FETCH CUSTOMERS', page], () => {
return getCustomersList(page, 100, createQuery(filters)).then(
({ rows = 1, totalPages: newTotalPages = 1 }) => {
if (totalPages !== newTotalPages) {
setTotalPages(newTotalPages);
}
dispatch(loadCustomers(rows));
}
);
});
但是在這種情況下,通過使用then我實際上是awaiting在做與在做某事之前回傳的承諾相同的事情,對嗎?
換句話說,將函式轉換為像這樣使用 async/await 會在這里使任何功能有所不同嗎?
const { isLoading, refetch } = useQuery(['FETCH CUSTOMERS', page], async () => {
return await getCustomersList(page, 100, createQuery(filters)).then(
({ rows = 1, totalPages: newTotalPages = 1 }) => {
if (totalPages !== newTotalPages) {
setTotalPages(newTotalPages);
}
dispatch(loadCustomers(rows));
}
);
});
uj5u.com熱心網友回復:
您的兩個示例中的回呼都回傳undefined,因為您沒有從then. 我相信 VSCode 打算讓您await getCustomersList將結果分配給一個變數,然后在沒有 athen的情況下處理任何進一步的邏輯,因此您的示例不準確。
async/await 版本實際上如下所示,在您的情況下,這可以清楚地表明您沒有回傳任何內容。
const { isLoading, refetch } = useQuery(['FETCH CUSTOMERS', page], async () => {
const customers = await getCustomersList(page, 100, createQuery(filters));
const { rows = 1, totalPages: newTotalPages = 1 } = customers;
if (totalPages !== newTotalPages) {
setTotalPages(newTotalPages);
}
dispatch(loadCustomers(rows));
return;
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/530120.html
