2016-04-18 14 views
6

Tôi đã đặt axios.defaults.timeout = 1000;Tính năng hết thời gian trong thư viện trục không hoạt động

Tôi đã dừng máy chủ cung cấp API.

Nhưng phải mất hơn 1 giây để hết thời gian chờ sau khi gửi yêu cầu.

Đây là cách yêu cầu của tôi trông:

import axios from 'axios'; 
axios.defaults.timeout = 1000; 

return axios.post(`${ROOT_URL}/login/${role}`, creds).then((response) => { 
     console.log(response); 

     if(response.status === 200) { 
      // If login was successful, set the token in local storage 
      localStorage.setItem(`${role}_log_toks`, JSON.stringify(response.data)); 

      // Dispatch the success action 
      dispatch(receiveLogin(response.data)); 

      return response; 
     } 
     }).catch(err => { 
     console.log(err); 
     // If there was a problem, we want to 
     // dispatch the error condition 
     if(err.data && err.status === 404) { 
      dispatch(loginError(err.data)); 
     } else { 
      dispatch(loginError('Please check your network connection and try again.')); 
     } 

     return err; 
     }); 

Tôi cũng đã cố gắng:

return axios.post(`${ROOT_URL}/login/${role}`, creds, {timeout: 1000}).then... 

Axios không chỉ dừng lại lấy và sau 5 - 10 phút cuối cùng nó cho thấy lỗi mạng. Tôi hiểu rằng có những kỹ thuật khác để xử lý thời gian chờ nhưng tại sao tính năng thời gian chờ trong các trục hoạt động? Điều gì có thể là lý do mà các trục không ngừng tìm nạp?

Axios version 0.9.1

EDIT: Như đã đề cập trong các ý kiến, tôi cũng cố gắng:

import axios from 'axios'; 

const httpClient = axios.create(); 

httpClient.defaults.timeout = 500; 

return httpClient.post(`${ROOT_URL}/login/${role}`, creds) 
    .then(handleResponse) 

Trả lời

2

Bạn cần phải tạo một thể hiện của các khách hàng Axios http:

const httpClient = axios.create(); 
httpClient.defaults.timeout = 500; 

Sau đó, bạn có thể sử dụng httpClient như sau:

return axios.post(`${ROOT_URL}/login/${role}`, creds) 
    .then(handleResponse) 

Trên một mặt lưu ý bạn cũng có thể thiết lập các địa chỉ cơ sở trong cùng một cấu hình thay vì sử dụng ${ROOT_URL}:

httpClient.defaults.baseURL = ROOT_URL 
+0

1. Tôi nghĩ bạn trở lại muốn httpClient.post ('$ {} ROOT_URL/đăng nhập/$ {role} ', creds) 2. Đã thử điều này. Không làm việc. 3. Hiện tại, tôi đang sử dụng kỹ thuật được mislav đề cập ở đây: https://github.com/github/fetch/issues/175 Hoạt động như một sự quyến rũ nhưng tôi muốn thời gian chờ do các trục cung cấp để hoạt động. –

+0

Tôi không chắc tại sao điều đó không hiệu quả với bạn. Bạn đang sử dụng phiên bản 'axios' nào? Bạn có thể bao gồm các câu lệnh 'require' /' import' và mã khởi tạo trục ở trên không? – Clarkie

+0

Tôi đã thêm đề xuất của bạn. –

Các vấn đề liên quan