Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Node js, область видимости (https://javascript.ru/forum/node-js-io-js/73056-node-js-oblast-vidimosti.html)

Maxix 18.03.2018 13:51

Node js, область видимости
 
Добрый день, помогите пожалуйста никак не могу разобраться.
Как сделать так, чтобы при вызове setURL(), функция возвращала next_url, которую я получаю внутри функции needle.get?

var Parse = function () {
this.setURL = function (URL, value) {

needle.get(URL, function (error, result) {
if (error) throw(error);
//получаем данные по адресу URL

next_url = //находим ссылку на статью

});

this.getURL = function (){
return{
url : next_url
};
}

};

Alexandroppolus 19.03.2018 11:19

надо возвращать промис
примерно так:
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 ещё не успел отработать. Там, видно, тоже надо будет промис возвращать

destus 19.03.2018 11:33

Alexandroppolus,
util.promisify

Maxix 19.03.2018 13:12

Благодарю за ответ, буду дальше разбираться!


Часовой пояс GMT +3, время: 22:22.