मैं एक समापन बिंदु से डेटा लाने की कोशिश कर रहा हूँ। फिर भी, एक छोटी सी गलती को छोड़कर सब कुछ ठीक काम करता है, मेरा मानना ​​​​है कि मैं ऐसा करता हूं जिसे मैं इस विशिष्ट संरचना के बारे में अच्छी तरह से नहीं जानता हूं।

मैं एक .then() के अंदर एक forEach() का उपयोग कर रहा हूं और अब मैं forEach के लिए दिए गए मान को अगले जंजीर में पास करना चाहता हूं।

const url = 'https://jsonplaceholder.typicode.com/users';
/*r = response, v = value, e = error, n = names array, iv = item value */

axios.get(url)
.then( r => r )
.then( r => r.data )
.then( r => r.map( v => v ) )
.then( r => {const n = r; return n} )
.then( n => { n.forEach( v => v) } )
.then( /* HERE I WANT TO IMPLEMENT THE RETURNED VALUE FROM THE PREVIOUS FOREACH() FUNCTION*/ )
.catch( e => e.respose ? console.log(e.response.status) : console.log(e.message) )

कोड अपडेट किया गया

axios.get(url)
.then( response => response.data )

/* Creates a copy from the responded array */
.then( 
  response => {
   const new_array = response.map( value => value )
   return new_array;
  } 
)

/* 
  Gets the name property for each value inside the copied array and stores it into a new array called names_array 
 */
.then(
  new_array => {
    const names_array = [];
    new_array.forEach(
      item => names_array.push(item.name)
    )
    return names_array
  }
)
.then(
  names => {
    console.log(names.sort( (a, b) => b-a) )

  }
)

/* Error handling */
.catch( e => e.respose ? console.log(e.response.status) : console.log(e.message) )
1
Evangelos 27 अक्टूबर 2018, 15:19

1 उत्तर

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

यदि आप केवल प्रतिक्रिया वस्तुओं से नामों की एक सरणी चाहते हैं तो आप श्रृंखला में अनावश्यक then() के साथ पूरी चीज को अधिक जटिल कर रहे हैं।

const new_array = response.map( value => value ) बनाना एक व्यर्थ कदम है जो बिना किसी कारण के मूल सरणी की प्रतिलिपि बना रहा है

पहले then() में नाम वापस करने के लिए आपको बस एक सरल map() की आवश्यकता है

const url = 'https://jsonplaceholder.typicode.com/users';

const getNames = () => axios.get(url)
  .then(res => res.data.map(o => o.name).sort((a, b) => a.localeCompare(b)))

getNames().then(sortedNames => console.log(sortedNames))
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
3
charlietfl 27 अक्टूबर 2018, 14:22