2016-04-10 43 views
0

私はReduxを使用しており、JS SDKを使用してFacebook APIを呼び出そうとしています。私はこれまでReduxで約束してきたので、メソッドFB.getLoginStatusは単純なJSオブジェクトを返すだけなので、ペイロードが未定義に戻らないようにする方法がわかりません。Reduxを使用したFacebook APIへの非同期リクエスト

redux-promiseを使用すると、それをapplyMiddleware(ReduxPromise)に追加すると、約束が解決されるまで何も返されません。しかし、私はここでそれを行う方法を知らない。

React NativeでReact Nativeを問題なく使用しましたが、ここで使用しようとしましたが、何らかの理由で非同期要求(待機中)が終了する前にコードがペイロードを返しています。だから、私はredux-awaitで作業しようとしましたが、動作させることができませんでした。

export function getLoginStatus() { 
    var res = FB.getLoginStatus(function(res) { 
    console.log(res); 
    }); 

    console.log("res ", res); 

    return { 
    type: GET_LOGIN_STATUS, 
    payload: res 
    } 
} 

答えて

1

フム、私はredux-promiseを使用していないてきたように、物事は少しトリッキー得ることができます。そして、あなたが試したことが他に何であるかを正確に伝えることはできません。

async function _getLoginStatus() { 
    var payload = new Promise((resolve, fail) => { 
    FB.getLoginStatus((res)=>resolve(res)); 
    }); 
    return { 
    type: GET_LOGIN_STATUS, 
    payload: payload 
    } 
} 

// Last time I exported an async function I needed this HYMMV 
export let getLoginStatus = _getLoginStatus; 

そして別の場所のコードで:しかし、これは私の最初のショットになり

import {getLoginStatus} from 'whatever.js'; 

var payloadResult = await getLoginStatus(); 
関連する問題