Мой код разрешает обещание через 1 минуту в powershell.Но когда я запускаю его с помощью веб-пакета, он выводит только обещание, но обещание не разрешается.Может быть, это из-за времени, затраченного на выполнение обещания.
Я коплю веб-сайт для новостей.Если новость найдена, я вывожу 1, я вывожу 0. Функция a()
в коде делает это.Поскольку это асинхронная функция, она возвращает обещание.Но когда я пытаюсь разрешить это обещание в функции aa()
с помощью .then()
, оно не разрешается.Ничего не выводится.
(async () => {
async function a() { // this function does t=web scraping and returns a promise
let Url = 'https://newsapi.org/v2/everything?q=from=2019-04-31 & sortBy = publishedAt & apiKey = 07 eda57a8a364c4cb2dad52e00ff6865 ';
const browser = await puppeteer.launch({
headless: true
});
const page = await browser.newPage();
await page.setViewport({
width: 1920,
height: 926
});
await page.goto(Url, {
waitUntil: 'domcontentloaded'
});
await page.addScriptTag({
url: 'https://code.jquery.com/jquery-3.2.1.min.js '
});
let news = await page.evaluate(() => {
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function(elem) {
return
$(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
var str = "Influenza has been ruled out, and at this stage, we do not believe there is a risk to the public "
var body = $("body");
var elements = $("*:contains('" + str + "')").filter(
function() {
return $(this).find("*:contains('" + str + "')").length == 0
})
return elements;
});
browser.close();
return news["length"]
}
async function aa() {
let y = a(); // it is outputing a promise
alert(y)
y.then(function(result, error) { //IT IS NOT WORKING
if (result) {
alert(result)
} else {
alert(error)
}
})
}
let c = aa();
})()
ожидаемый результат: 1 или 0;без ошибок