надо возвращать промис
примерно так:
var Parse = function () {
var next_url;
this.setURL = function (URL, value) {
return new Promise(function(res, rej) {
needle.get(URL, function (error, result) {
if (error) {
rej(error);
return;
}
//получаем данные по адресу URL
next_url = //находим ссылку на статью
res(next_url);
});
});
};
this.getURL = function (){
return{
url : next_url
};
}
};
но тогда getURL может возвращать старое значение, если needle.get ещё не успел отработать. Там, видно, тоже надо будет промис возвращать