Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вернуть переменную из этой функции (https://javascript.ru/forum/misc/46411-kak-vernut-peremennuyu-iz-ehtojj-funkcii.html)

DeathD00r 08.04.2014 20:32

Как вернуть переменную из этой функции
 
Здравствуйте. Изучаю node.js.Подскажите, как в данном участке кода из функции getPage вернуть текст файла.
var fs = require("fs");
//TO DO:
//RETURN PAGE
function getPage(name) {
    var page = "";
    fs.readFile("./Pages/" + name + ".html", function (err, data) {
        if (err) throw err;
        page = data.toString();
        console.log(page); // <html><head>............
    })
    console.log(page);
    return page;
}

exports.getPage = getPage;


Я так понимаю, что функция readFile вызывается асинхронно, поэтому я верну из getPage "" раньше, чем page станет содержать текст файла?

Sweet 08.04.2014 20:43

Это асинхронное программирование, оно работает совсем по другому. И твоя функция getPage должна тоже работать асинхронно. Вообще забудь оператор return! Твой модуль должен работать так:
var swagModule = require("./getPage.js");

swagModule.getPage("some_name", function (err, page) {
    console.log(page); // <html><head>............
});

DeathD00r 08.04.2014 20:51

Спасибо) Решил проблему по другому, я таки понял что иду против идеологии js, превращая асинхронные вызовы в синхронные.


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