Я пытался понять Обещания, и я бью кирпичную стену.
== Заказать Я хочу, чтобы код работал ==
- Мне нужен файл .txt для загрузки каждой строки в массив.
- ПОДОЖДИТЕ, чтобы это произошло.
- Запуск функции для каждой возвращаемой записи и массива.
- ПОДОЖДИТЕ для каждого индекса массива, который будет обработан перед выполнением следующего.
== Мои функции ==
- Вызовите эту функцию, чтобы запустить программу.
async function start(){
var data = await getData();
console.log(data);
for (var i = 0; i < data.length; i++){
console.log(await searchGoogle(data[i]));
}
}
- 'ожидайте' данных из getData
async function getData(){
return new Promise(function(resolve, reject){
fs.readFile('./thingsToGoogle.txt', function(err, data) {
if(err) throw err;
var array = data.toString().split("\n");
resolve(array);
});
});
}
- Затем вызовите searchGoogle для каждого индекса в массиве.
async function searchGoogle(toSearch) {
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/');
await page.type('input[name=q]', toSearch);
try {
console.log('Setting Search' + toSearch);
await page.evaluate(() => {
let elements = document.getElementsByClassName('gNO89b');
for (let element of elements)
element.click();
});
await page.waitForNavigation();
} catch (err) {
console.log(err)
}
try {
console.log("Collecting Data");
const[response] = await Promise.all([
page.waitForNavigation(),
await page.click('.rINcab'),
]);
} catch (err) {
console.log("Error2: " + err)
}
let test = await page.$$('.LC20lb');
// console.log(test);
allresults = [];
for (const t of test) {
const label = await page.evaluate(el => el.innerText, t);
if (label != "") {
allresults.push(label);
}
}
await browser.close();
resolve(allresults);
})();
}
Проблема в том, что это не работает. он не ждет загрузки файла.
Изображение выхода Node JS.
Надеюсь, снимок экрана был загружен, но вы можете видеть, что он складывает функцию SearchGoogle console.logs;
console.log('Setting..')
console.log('Setting..')
console.log('Collecting..')
console.log('Collecting..')
Когда это должно быть
console.log('Setting..')
console.log('Collecting..')
console.log('Setting..')
console.log('Collecting..')
Это первый раз, когда мы имеем дело с обещаниями, я много читал о них и делал кусочки кода, чтобы понять их, однако, когда я пытался применить эти знания, я боролся. Надеюсь, что кто-то может помочь.
-Peachman-