या दूसरे शब्दों में, मुझे कैसे पता चलेगा कि भेजी गई कोई कार्रवाई कब पूरी हो गई है?

मेरे पास एक वेबपैप है जहां मैं उपयोगकर्ता इनपुट पर प्रेषण के माध्यम से रेडक्स स्टोर अपडेट करूंगा। अगर मैं प्रेषण के ठीक बाद रेडक्स स्टोर की स्थिति को सर्वर पर धक्का देता हूं, तो सर्वर में सबसे अद्यतन जानकारी नहीं होती है। मुझे सर्वर पर धकेलने से पहले कार्रवाई पूरी होने की प्रतीक्षा करनी होगी, इसलिए प्रश्न।

संपादित करें मार्करिकसन के उत्तर के आधार पर मैंने इसे हल किया। मैंने सोचा था कि प्रेषण को असीमित रूप से बुलाया गया था लेकिन प्रेषण कार्यों के समूह का निष्पादन समकालिक रूप से हुआ। यह गलत है और मार्क सही है। मेरा मुद्दा अद्यतन सर्वर कॉल एक घटक में किया गया था और यह सर्वर को एक प्रोप को धक्का देता है जिसे redux-store द्वारा अद्यतन करने की आवश्यकता होती है। प्रोप का वह अद्यतन पर्याप्त तेजी से नहीं हुआ।

0
theNotSoPro 20 जून 2018, 21:32

2 जवाब

सबसे बढ़िया उत्तर

डिस्पैचिंग पूरी तरह से सिंक्रोनस है, जब तक कि मिडलवेयर द्वारा परिवर्तित नहीं किया जाता है। इसलिए, जैसे ही dispatch() को कॉल वापस आती है, स्टोर की स्थिति अपडेट कर दी गई है और सभी ग्राहकों को सूचित कर दिया गया है।

यदि आपको कुछ async व्यवहार को पूरा करने के लिए प्रतीक्षा करने की आवश्यकता है, तो आप एक थंक लिख सकते हैं जो एक वादा देता है, और जब आप प्रेषण करते हैं तो उसे बंद कर दें:

function someThunkReturningAPromise() {
   return (dispatch) => {
      const promise = myAjaxLib.fetchData().then(response => {
          dispatch(loadData(response.data));
      });

      return promise;
   } 
}

dispatch(someThunkReturningAPromise()).then( () => {  });
0
markerikson 20 जून 2018, 21:35

प्रश्न के लिए थोड़ा देर हो चुकी है, लेकिन प्रश्न शीर्षक के आधार पर यहां आने वाले लोगों के लिए - एक नज़र डालें:

store.subscribe()
store.getState()

जहां 'स्टोर' आपके रेडक्स स्टोर का संदर्भ है।

store.subscribe(() => {
    const newState = store.getState();
    // check out your updated state
});

ऊपर दिया गया कोड किसी भी समय चलेगा जब Redux स्थिति में कोई अपडेट होगा

1
Brandon McAlees 5 पद 2018, 22:57