@HAbRAhabp

Как вернуть результат функции из вложенной в нее функцию?

Помогите пожалуйста, туплю под вечер. Как сделать, правильный return в этом случае? Кусок кода:
function readSession (id) {
    var fs = require ("fs"),
        PHPUnserialize = require('php-unserialize');

    fs.readFile("/var/www/cookies/sess_" + id, function (err, boof) {
        if (err) throw err;

        console.log(PHPUnserialize.unserializeSession(boof.toString()));
        return PHPUnserialize.unserializeSession(boof.toString())
    })
}

app.get('/balance.json', function (req, res) {
    res.setHeader("content-type", "application/json; charset=UTF-8");
    res.send(JSON.stringify(readSession(req.cookies.PHPSESSID)));
})

console.log выводится нормально, но на страницу ничего выводится, т.к. результат возвращается readFile, а не readSession
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
@halalala
Может быть нужно в readSession добавить колбэк ,будет выглядеть так

function readSession (id,callback) {
    var fs = require ("fs"),
        PHPUnserialize = require('php-unserialize');

    fs.readFile("/var/www/cookies/sess_" + id, function (err, boof) {
        if (err) throw err;

        console.log(PHPUnserialize.unserializeSession(boof.toString()));
        callback( PHPUnserialize.unserializeSession(boof.toString()));
    })
}

app.get('/balance.json', function (req, res) {
    res.setHeader("content-type", "application/json; charset=UTF-8");
    readSession(req.cookies.PHPSESSID,function(readSession) {
       res.end(JSON.stringify(readSession));
});
   
})


Думаю ошибка была в том,что ты уже отправлял ответ,когда твоя функция не успела читать файл.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы