Вот мой код:
var gblink = require('./getbloglinks');
new Promise(function (resolve, reject) {
var getLinks = gblink.getBlogLinks("www.example.com");
resolve(getLinks);
}).then(function (data) {
console.log("here");
console.log(data);
return false;
})
gblink.getBlogLinks()
- это функция, которая получает URL и возвращает все ссылки на этой странице (через короткое время) . Когда я запускаю свой код, сразу же будет напечатано console.log("here");
, а затем console.log(data);
будет напечатано как undefined
.
В любом случае, как я могу сделать это обещание, ожидая, пока не вернется результат getBlogLinks()
?
Заметил, что когда я вызываю функцию gblink.getBlogLinks()
вручную, она также работает, это занимает некоторое время, и все, что мне нужно сейчас сделать, - это реализовать систему ожидания для этой функции.
Вот gblink.getBlogLinks()
:
const NN = require('nightmare');
exports.getBlogLinks = function (data){
const n = NN({show:true});
n.goto(data)
.evaluate(() => {
var data = document.querySelectorAll("a[target='_blank']");
arr = [];
i=0;
Array.from(data).forEach( function(x){
arr[i] = x.href;
i++;
});
return arr;
})
.then((data) => {
return n.end(data);
})
}