मैं एक साधारण लघु सर्वेक्षण के लिए आरएक्सजेएस का उपयोग करने की कोशिश कर रहा हूं। सर्वर पर path
स्थान पर प्रत्येक delay
सेकंड में एक बार अनुरोध करने की आवश्यकता होती है, एक बार दो शर्तों में से एक बार समाप्त हो जाता है: या तो कॉलबैक isComplete(data)
सत्य लौटाता है या इसने maxTries
से अधिक सर्वर को आजमाया है। यहाँ बुनियादी कोड है:आरएक्सजेएस 5.0 "ऐसा करते समय" तंत्र की तरह
newShortPoll(path, maxTries, delay, isComplete) {
return Observable.interval(delay)
.take(maxTries)
.flatMap((tryNumber) => http.get(path))
.doWhile((data) => !isComplete(data));
}
हालांकि, doWhile RxJS 5.0 में मौजूद नहीं है, तो ऐसी स्थिति है जिसमें यह केवल सर्वर ले() कॉल करने के लिए maxTries
काम करता है, धन्यवाद कोशिश कर सकते हैं, लेकिन isComplete
हालत नहीं है काम। मैं इसे कैसे बना सकता हूं ताकि अवलोकन योग्य() मानों तक पूरा हो जाए, पूर्ण पूर्ण सत्य लौटाएगा, जिस बिंदु पर यह अगले() मूल्य और पूर्ण() होगा।
मुझे ध्यान रखना चाहिए कि takeWhile()
मेरे लिए यहां काम नहीं करता है। यह अंतिम मूल्य वापस नहीं करता है, जो वास्तव में सबसे महत्वपूर्ण है, क्योंकि जब हम जानते हैं कि यह किया गया है।
धन्यवाद!
संभवतः का डुप्लिकेट: http://stackoverflow.com/questions/36007911/rxjs-poll-until-interval-done-or-correct-data-received –
यह एक नहीं है इस अर्थ में डुप्लिकेट करें कि प्रश्न 'doWhile' के प्रतिस्थापन के लिए पूछ रहा है। –