Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2014, 20:32
Новичок на форуме
Отправить личное сообщение для DeathD00r Посмотреть профиль Найти все сообщения от DeathD00r
 
Регистрация: 08.04.2014
Сообщений: 2

Как вернуть переменную из этой функции
Здравствуйте. Изучаю 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 станет содержать текст файла?

Последний раз редактировалось DeathD00r, 08.04.2014 в 20:37.
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2014, 20:43
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

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

swagModule.getPage("some_name", function (err, page) {
    console.log(page); // <html><head>............
});
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2014, 20:51
Новичок на форуме
Отправить личное сообщение для DeathD00r Посмотреть профиль Найти все сообщения от DeathD00r
 
Регистрация: 08.04.2014
Сообщений: 2

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
Помогите разобраться в повторным обращении к функции, как её обнулить. AdvoGad Общие вопросы Javascript 0 01.09.2008 11:35
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58