У меня есть небольшая проблема с использованием nodejs с Async lib.NodeJS: модуль и порядок Async
Вот и проблема: я пытаюсь получить ссылки с веб-сайта и отображать их в массиве.
Проблема в том, что когда я запускаю скрипт, он сначала отображает вторую функцию, а затем первую функцию.
Почему? :/
var request = require("request");
var cheerio = require("cheerio");
var async = require("async");
var homepage = "http://xxx";
var start = [];
async.series([
function(callback){
//Request to website
var myVisit = request(homepage,function(err,resp,body){
if(err) throw err
$ = cheerio.load(body);
////Get all the links in the list
$('aside ul li').each(function(){
start.push($(this).find('a').attr('href'));
});
console.log(start);
});
callback(null, myVisit);
},
/// Dummy function
function(callback){
var display = console.log("Blabla");
callback(null,display);
}
]);
///Outputs 'Blabla' and then the links array
Это не проблема. Объявление 'request (..)' и передача его ссылки на 'callback (null, myVisit);' это правильный способ сделать это. То, о чем @ user2914878 не думал, является отложенной и отложенной формой, в которой 'myVisit' будет сообщать о своих результатах (с помощью' console.log (start); '). Мой ответ объясняет это более подробно. – Saran
Я думал, что он хочет обеспечить выполнение первой функции, а req (...) дает ее результат перед вызовом следующей функции. Поэтому я предложил это решение, которое блокирует запрос. – ankit042
На самом деле, я хочу, чтобы первая функция выполнялась сначала, а затем переходила ко второй функции. @ ankit042 вы решили работать. Я положил обратный вызов в конце запроса. – user2914878