#javascript
#javascript
Вопрос:
В настоящее время я пытаюсь использовать .каждый из них затем выполняет мой запрос внутри него, но затем, когда я утешаю.запишите это, это не в порядке. Я новичок в 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)
})
});
})
Комментарии:
1. Вы просто хотите получить выходные данные в правильном порядке или вам требуется, чтобы запрос выполнялся последовательно?
2. Я хочу, чтобы выходные данные были в правильном порядке
3. В этом случае соберите свои обещания в массив (вместо того, чтобы присоединять
.then
их по отдельности) и вызывайтеPromise.all
, как показано ниже Квентином.4. Хорошо, большое спасибо, я получил то, что хотел, работая!
Ответ №1:
Смысл асинхронных функций в том, что они выполняются, когда они выполняются.
Если вам нужно сохранить порядок, затем оберните обещания, возвращаемые axios, в массив и передайте его Promise.all
.
const promises = [
axios(...),
axios(...),
axios(...),
];
Promise.all(promises).then(ordered_array => {
ordered_array.forEach( result => { ... } );
});