मैं एक छोटे से एप्लिकेशन के लिए रेडक्स के साथ प्रतिक्रिया का उपयोग कर रहा हूं जो मौसम पूर्वानुमान दिखाता है और उपयोगकर्ता शहर के पूर्वानुमान को पसंदीदा सूची में सहेज सकता है। संग्रहीत शहर का पूर्वानुमान शहर की आईडी है, इसलिए पसंदीदा सरणी इस तरह दिखती है:

favoriteCities : ['12211', '43434', '43435'] // each id represent a city unique id.

एकल शहर के लिए एपीआई को कॉल करने वाली क्रिया - इस तरह दिखती है:

export const getCurrentForecast = (cityCode) => {

    return async dispatch => {
        fetch(`http://dataservice.accuweather.com/forecasts/v1/daily/5day/${cityCode}?apikey=${apiKey}&metric=true`)
            .then(function (response) {

                return response.json();
            })
            .then(function (data) {
                return dispatch({
                    type: "GET_CURRENT_FORECAST",
                    payload: data
                });
            });
    };
};

मैं एक ही अनुरोध से सभी शहरों के पूर्वानुमान कैसे प्राप्त कर सकता हूं लेकिन विभिन्न पैरामीटर के साथ? (शहर का नाम)

यहाँ मेरे मन में है (यह सिर्फ एक मोटा स्केच है)

let citiesForecasts = [];
for(let i=0; i < favoriteCities.length; i++){
   // iterate over the favorite cities codes
   let currentCityCode = favoriteCities[i];
   citiesForecasts.push(getCurrentForecast(currentCityCode )) // push the result object
}

अस्वीकरण: हालांकि यह एक डुप्लीकेट पोस्ट की तरह लगता है - ऐसा नहीं है - मैंने कई पोस्ट में देखा है और पर्याप्त उत्तर नहीं मिला है।

0
RoyBarOn 8 सितंबर 2019, 15:50

1 उत्तर

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

आप इसे Promise.all का उपयोग करके आसानी से प्राप्त कर सकते हैं। नीचे दिए गए कोड की जाँच करें।

let citiesForecasts = [];
favoriteCities.map(city => citiesForecasts.push(getCurrentForecast(city)));

Promise.all(citiesForecasts).then((results) => {
   // results will comes in type of array
}).catch((err) => {
    console.log(err);
});

वैकल्पिक तरीके से आप axios लाइब्रेरी का भी उपयोग कर सकते हैं और axios.all का उपयोग कर सकते हैं एकाधिक अनुरोध कॉल करने की विधि।

आशा है कि यह आपके काम आएगा!

1
user11910739user11910739 8 सितंबर 2019, 17:07