외부 로그인이나 결제 인증시에 비동기 방식중에..
외부 로그인이나 결제를 비동기 방식으로 구현하면,
요청을 한 세션에 결과를 돌려줘야 하는데,
콜백함수에 세션정보가 없어서..
효과적으로 처리할 수 있는 방법에 대해 조언 부탁드립니다.
add a comment
외부 로그인이나 결제를 비동기 방식으로 구현하면,
요청을 한 세션에 결과를 돌려줘야 하는데,
콜백함수에 세션정보가 없어서..
효과적으로 처리할 수 있는 방법에 대해 조언 부탁드립니다.
안녕하세요. 아이펀팩토리입니다.
다음 두 가지 방법이 유용합니다.
void Callback(const Ptr<session> &session, ...) { } void OnXxx(const Ptr<session> &session, ...) { XxxHandler handler = bind(&Callback, session, _1, _2, ...); // _1, _2 는 XxxHnadler 의 인자 여기서 이 handler 를 콜백으로 사용하면 session 이 함께 전달됩니다. }
void OnXxx(const Ptr<session> &session, ...) { XxxHandler handler = [session /* 여기있는 변수가 함께 전달됩니다*/](...) { // ... 은 XxxHandler 의 인자 // 이 곳이 콜백함수입니다. }; 여기서 이 handler 를 콜백으로 사용하면 session 이 함께 전달됩니다. }
인터넷에 다양한 자료들이 있으니 참고하시면 도움이 되실 듯 합니다.
감사합니다.
첫 답변의 코멘트를 여기로 드립니다.
해당 예제를 bind 를 사용하게 수정한 예입니다.
void OnAuthenticated(const Ptr<session> &session, const AppleGameCenterAuthenticationRequest2 &request, const AppleGameCenterAuthenticationResponse &response, bool error) { ... } void OnLogin(const Ptr<session> &session, ...) { ... Authenticate(request, bind(&OnAuthenticated, session, _1, _2, _3)); }
Asked: 2019-10-17 15:34:18 +0900
Seen: 39 times
Last updated: Oct 17