Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Axios异步get请求以错误的顺序返回_Javascript - Fatal编程技术网

Javascript Axios异步get请求以错误的顺序返回

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) => {

我目前正在尝试使用.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 $ = 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
,就像下面昆廷演示的那样。好的,非常感谢我得到了我想要的工作!