@vetsmen

Асинхронность и взятие request запроса?

У меня есть функция
var getStore = function(sessionID) {
	sessionStore.get(sessionID, function(err, session){
		return session ? true : false;
	});
};

По которому есть 2 вопроса:
1) Он не работает из-за того, что он асинхронный. Как сделать так, чтобы он работал? На примере с промисами как не пытался, они не работают. Можете привести конкретный пример по этому коду?
2) Как сделать из этой функции вид: req.getStore(), которая будет вызываться вот так: socket.request.getStore(), в ней брать socket.request.sessionID, проверять в sessionStore и возвращать true/false?
Т.е. сейчас это выглядит примерно так: getStore(socket.request.sessionID), а хотелось бы socket.request.getStore()
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
yarkov
@yarkov
Помог ответ? Отметь решением.
Ну зачем? Зачем из хорошего асинхронного кода делать нехороший синхронный? Есть инструмент - работайте. Зачем его менять?
На примере с промисами как не пытался, они не работают.

Плохо пытались:
var getStore = function (sessionID) {
    return new Promise(
        function (resolve, reject) {
            sessionStore.get(sessionID, function(err, session) {
                if(err) {
                    reject(err);
                }
                resolve(!!session);
            });
        });
}
// usage
getStore(1).then(function(isAuth){
    // isAuth - true or false
}, function(error){
    // error
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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