Javascript Axios异步get请求以错误的顺序返回
我目前正在尝试使用.each,然后在其中发出请求,但当我使用console.log时,它就不正常了。我对Axios和cheerio以及一般的编码都非常陌生,所以我想知道如何才能使调用输出恢复正常Javascript Axios异步get请求以错误的顺序返回,javascript,Javascript,我目前正在尝试使用.each,然后在其中发出请求,但当我使用console.log时,它就不正常了。我对Axios和cheerio以及一般的编码都非常陌生,所以我想知道如何才能使调用输出恢复正常 const axios = require('axios') const cheerio = require('cheerio') axios.get('http://www.mangapanda.com/one-piece/1') .then((response) => {
const axios = require('axios')
const cheerio = require('cheerio')
axios.get('http://www.mangapanda.com/one-piece/1')
.then((response) => {
const $ = cheerio.load(response.data)
//console.log($('option'))
$('option').each((index, element) => {
console.log(index)
axios.get('http://www.mangapanda.com/one-piece/1/'+(index+1)).then((response) => {
const z = cheerio.load(response.data)
var x = z('img#img')[0].attribs.src
console.log(x, index)
})
});
})
异步函数的要点是它们在完成时就完成了 如果需要保留顺序,则将axios返回的承诺封装在一个数组中,并将其传递给
Promise.all
const promises = [
axios(...),
axios(...),
axios(...),
];
Promise.all(promises).then(ordered_array => {
ordered_array.forEach( result => { ... } );
});
你只是想以正确的顺序获得输出,还是要求请求按顺序进行?我希望输出的顺序正确。在这种情况下,将承诺收集到一个数组中(而不是单独附加
。然后),然后调用Promise.all
,就像下面昆廷演示的那样。好的,非常感谢我得到了我想要的工作!