2016-08-19 36 views
8

Tôi tự hỏi làm thế nào để tôi quay trở lại một hình thức hứa hẹn Axios? Tôi không chắc liệu mình có cần sử dụng Interceptor không?Trả lời lời hứa từ Axios?

tôi có mã này ngay bây giờ

export function fetchStorage() { 
    return function (dispatch) { 
     return new Promise(function(resolve, reject) { 
     if (1 === 1) { 
      resolve('it works!'); 
     } else { 
      reject(':('); 
     } 
     }); 
    }; 
} 

this.props.fetchStorage().then(function() { 
      console.log('then'); 
     }); 

Bây giờ nói rằng tôi muốn thay đổi fetchStorage để làm điều gì đó qua ajax và tôi sẽ có nó như

var instance = axios.create({ 
      baseURL: 'http://localhost:54690/api', 
      timeout: 2000, 

     }); 

     instance.get('/Storage/Get') 
      .then(function (response) { 
       console.log(response); 
      }) 
      .catch(function (error) { 
       console.log(error); 
      }); 

Tôi làm cách nào để trả lại lời hứa thay vì thực hiện ở đây?

Sửa

Chỉ cần làm rõ lý do tại sao tôi làm điều này tôi có một cái gì đó giống như mẫu

componentWillMount() { 
     this.props.setPreLoader(true); 
     this.props.fetchStorage().then(function() { 
      this.props.setPreLoader(false); 
     }); 
    } 

export function fetchStorage() { 
    return function (dispatch) { 
     return new Promise(function (resolve, reject) { 
      axiosInstant.get('/Storage/Get') 
       .then(function (response) { 
        let payload = response.data; 
        console.log(payload); 
        dispatch({ type: actions.FETCH_STORAGE, payload: { storages: payload } }); 
       }) 
       .catch(function (error) { 
        console.log(error); 
       }); 
     }); 
    }; 
} 
+1

Tại sao không 'trở lại instance.get ('/lưu trữ/Get ') 'Tôi đang thiếu cái gì ở đây? –

+0

Tôi cũng đang sử dụng mẫu redux nên tôi cần gửi đi công văn và nếu tôi trở lại như bạn có, thì tôi luôn phải nhớ gửi đi công văn đó mỗi lần tôi sử dụng chức năng đó. – chobo2

+0

@ chobo2 tôi không hiểu tại sao bạn không trả lại lời hứa rằng các trục đã mang lại cho bạn. –

Trả lời

-5

Xem này:

return new Promise(function (resolve, reject) { 
    var instance = axios.create({ 
     baseURL: 'http://localhost:54690/api', 
     timeout: 2000, 
    }); 
    instance.get('/Storage/Get') 
     .then(function (response) { 
      if(1 === 1) 
      resolve(response); 
     }) 
     .catch(function (error) { 
      reject(error); 
     }); 

}); 
+1

Ah, nghĩ rằng có lẽ nó đã trở lại của riêng mình cho một lời hứa và tôi không cần phải quấn nó. – chobo2

+0

@ chobo2 chắc chắn có vẻ như nó trả về một lời hứa. hoặc, ít nhất là sau đó. –

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