[英]How to make an async call after using axios.CancelToken?
我正在構建一個React Native
應用程序。 我的 API 組件包含一個我希望能夠停止的異步調用。 為此,我使用axios.CancelToken
:.
const source = axios.CancelToken.source();
async getProductCategoriesRequest() {
try {
let response = await catalog.get(`category`, {
cancelToken: source.token,
});
return response.data;
} catch (error) {
if (axios.isCancel(error)) {
console.log(error)
return Promise.reject();
}
}
}
從我的組件中,我在onPress
上調用requestCancellationHandler
:
const requestCancellationHandler = () => {
source.cancel('API request is being canceled');
props.resetState();
};
一切都很好,除非我重新加載應用程序,否則我無法撥打另一個電話。 我在 API 請求 Catch 中不斷收到Cancel {message: "API request is being canceled"}
。 簡單的頁面重新加載允許我進行另一個異步調用
我怎樣才能解決這個問題而不必重新加載?
我認為Axios 文檔中的第二個示例會很有用。
const CancelToken = axios.CancelToken;
let cancel;
axios.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c;
})
});
// cancel the request
cancel();
在你的情況下,
let source;
async getProductCategoriesRequest() {
source = axios.CancelToken.source();
try {
let response = await catalog.get(`category`, {
cancelToken: source.token,
});
return response.data;
} catch (error) {
if (axios.isCancel(error)) {
console.log(error)
return Promise.reject();
}
}
}
和
const requestCancellationHandler = () => {
source.cancel('API request is being canceled');
props.resetState();
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.