2016-05-18 2 views
0

私はReact NativeとRefluxを使用してIOSアプリケーションを開発しています。ユーザーが特定のactionSheetIOSを開くと、ストアが非同期要求を行うアクションをトリガーします。ストアは返されるすべてのインスタンスのコレクションを保持し、すべてのデータをそのデータセットを購読するすべてのビューに渡します。ただし、actionSheetのオプションの1つでは、そのリクエストによって返されるデータが必要なため、ユーザーがオプションをクリックしたときにデータが準備できるとは保証できません。ユーザーがactionSheetIOSのオプションをクリックしたときに、データ(非同期)が準備されていることを保証する方法を教えてください。ユーザーがactionSheetIOSのオプションをクリックしたときに、データ(async)が準備完了であることを保証する方法を教えてください。

私はこれを十分に説明することができたと思います。また、私はReact/Refluxをよく知っているので、何かを完全に失っているかもしれません。

答えて

0

データ準備が完了するまでActionSheetIOSをトリガーできませんか?このような何か...

<TouchableOpacity 
 
    onPress={() => { 
 
      // call the async method first 
 
      runSomeAsyncMethod() 
 
      .then((data) => { 
 
      // wait until the method finishes before triggering ActionSheetIOS 
 
      ActionSheetIOS.showActionSheetWithOptions({ 
 
       options: BUTTONS, 
 
       cancelButtonIndex: CANCEL_INDEX, 
 
       destructiveButtonIndex: DESTRUCTIVE_INDEX, 
 
       }, 
 
       (buttonIndex) => { 
 
       this.setState({ clicked: BUTTONS[buttonIndex] }); 
 
       }); 
 
      } 
 
      }} 
 
> 
 
    <Text>Click Me!</Text> 
 
</TouchableOpacity>

これはあなたの方法は約束であると仮定している...しかし、あなたのアイデアを得る必要があります。

+0

おかげでブラッドが、それは良い提案です。これを試してみるが、この実装はActionSheet(ユーザーがそのオプションをクリックしないときの低速API要求)によって提供される非同期オプションを遅くする可能性がある。さらに、呼び出される非同期関数は、そのビューに直接応答しない逆流アクションによるものです。しかし、要求されたデータは、アプリケーションを実行する大きなデータセットの一部ではないため、要求された方法を変更することができます。 – generalchaos

0

私が最もよく働いていることがわかったのは、要求されたデータであるかのようにプロミスを返すことです。プロミスには非同期リクエストが含まれ、必要なデータで解決されます。以下のようになります

たonPressハンドラは次のとおりです。

onPress = {()=>{ 
    returnedPromise.then((requestData)=>{ 
    // do something with requestedData 
    }).catch(()=>{ 
    // oops.. time to handle the error 
    }) 
}} 
関連する問題