मेरे उपयोग मामला है:RxJs observables: कुछ और async के बाद retryWhen चलाने का अनुरोध करता है
- उपयोगकर्ता हमारे एपीआई जो क्योंकि जेडब्ल्यूटी समाप्त हो रही है (एक केवल Http कुकी के रूप में पारित कर दिया) के विफल रहता है से संपत्ति का अनुरोध करता है - एपीआई 401 स्थिति कोड लौटाने ।
- हम अपने क्लाइंट से auth0 के अनुरोध के साथ एक नया जेडब्ल्यूटी प्राप्त करने के लिए एक refresh_token का उपयोग करके फिर से (बिना उपयोगकर्ता के कुछ भी) प्रमाणित करते हैं और प्रमाणित करते हैं।
- हम अपने एपीआई को उस नए जेडब्ल्यूटी को समय-समय पर बदलने के लिए httpOnly कुकी के रूप में सेट करने के लिए भेजते हैं।
- हम तो कदम 1.
मैं redux-observable के साथ मेरी Redux अनुप्रयोग के भीतर observables उपयोग करने के लिए कोशिश कर रहा हूँ में मूल अनुरोध एपीआई के लिए किए गए उपयोगकर्ता पुन: प्रयास करना चाहते हैं। यदि आप उपर्युक्त उपयोगकर्ता प्रवाह कार्य करने का एक और तरीका सोच सकते हैं तो मुझे यह सुनकर खुशी होगी कि कैसे।
एनबी। अब तक मैं सक्षम कदम 4. जोड़ने के लिए चरणों 1, 2 और 3 नहीं बल्कि एक तरह से के बारे में सुनिश्चित पूरा करने के लिए rxjs V5
export const fetchAssetListEpic = (action$, store) => {
return action$.ofType('FETCH_ASSET_LIST')
.switchMap(action => {
const options = {
crossDomain: true,
withCredentials: true,
url: uriGenerator('assetList', action.payload)
};
return ajax(options);
})
.map(fetchAssetListSuccess)
.retryWhen(handleError)
.catch(redirectToSignIn);
};
function handleError(err) {
return (err.status === 401) ?
/* Authenticate here [Step 2] */
/* Send new JWT to API [Step 3] */
/* If successful make original request again [Step 4] */
:
Observable.throw(err);
}
function redirectToSignIn() {
/*I will redirect here*/
}
का उपयोग कर इम मैं मार्क लेकिन किसी भी मदद पूरी तरह से बंद हो सकता है बहुत अच्छा होगा!
वास्तव में अच्छा जवाब - मजाकिया बात: न तो '.if' और' .let' दस्तावेज प्रतीत होता है (http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html) –
दिलचस्प , उन दस्तावेजों को उत्पन्न करने वाले ऑटो के नीचे की ओर मुझे लगता है कि – paulpdaniels
इस @paulpdaniels के लिए धन्यवाद, यह बहुत अच्छा लग रहा है! मुझे अभी तक इसे लागू करने का मौका मिला है, लेकिन जब मुझे मौका मिलता है तो अपडेट हो जाएगा। हालांकि स्वीकार किए गए उत्तर के रूप में इसे चिह्नित करने के लिए खुश है :) – Jbarget