2016-08-19 8 views
8

मुझे आश्चर्य है कि मैं एक वादा फॉर्म एक्सिस कैसे वापस कर सकता हूं? मुझे यकीन नहीं है कि मुझे इंटरसेप्टर का उपयोग करने की ज़रूरत है?एक्सिस से रिटर्न वादा?

मैं इस कोड है अभी

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'); 
     }); 

अब कहते हैं कि मैं fetchStorage बदलने के लिए ajax के माध्यम से कुछ करना चाहता हूँ और मैं इसे

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); 
      }); 
की तरह होता है

मैं इसे करने के बजाय वादा कैसे वापस कर सकता हूं?

संपादित

बस स्पष्टीकरण के लिए कारण है कि मैं यह कर रहा हूं मैं इस नमूने

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

क्यों नहीं 'वापसी instance.get ('/ संग्रहण/जाओ ') क्या मैं यहाँ कुछ याद कर रहा हूँ? –

+0

अच्छी तरह से मैं रेडक्स पैटर्न का उपयोग कर रहा हूं इसलिए मुझे प्रेषण भेजने की आवश्यकता है और अगर मैं आपके पास वापस लौटता हूं, तो मुझे हर बार उस फ़ंक्शन का उपयोग करने के लिए हमेशा उस प्रेषण को भेजना याद रखना होगा। – chobo2

+0

@ chobo2 मुझे समझ में नहीं आ रहा है कि आप इस वचन को वापस क्यों नहीं कर रहे हैं कि अक्षांश आपको पहले ही दे रहा है। –

उत्तर

-5

देखें तरह कुछ है:

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

आह, सोचा कि शायद यह एक वादे के लिए खुद का लौट रहा था और मुझे इसे लपेटने की जरूरत नहीं थी। – chobo2

+0

@ chobo2 निश्चित रूप से ऐसा लगता है कि यह एक वादा देता है। या, कम से कम एक अजेय। –

संबंधित मुद्दे