2017-01-14 10 views
0

次のコードでは、使用しているnpmモジュールによってupdateQueryが提供されているため、変更できません。私はnewsMsgというオブジェクトにいくつかの情報を添付したいと思います。それはupdateQueryで返されます。私はその情報を得るために約束をする必要があります。配列を返す関数内の約束?

このようなやり方はありますか?

subscribe(fromID, toID, updateQuery) { 
    this.subscriptionObserver = this.props.client.subscribe({ 
     query: IM_SUBSCRIPTION_QUERY, 
     variables: { fromID: this.fromID, toID: this.toID }, 
    }).subscribe({ 
     next(data) { 
      const newMsg = data.IMAdded; 

      //ATTACH INFO TO newMsg HERE VIA A PROMISE? 

      updateQuery((previousResult) => { 
      return update(
        previousResult, 
        { 
         instant_message: { 
          $push: [newMsg], 
         }, 
        } 
       ); 
      }); 
     }, 
     error(err) { 
      console.error('err', err); }, 
    }); 
} 

答えて

0

約束は、将来的に提供することができるデータを表しているので、あなたがまだデータを持っていないので、この時点で、あなたの関数から返すことができ、すべては約束自体(ないデータ)です。

データを要求した発信者は、返されたデータから約束を得て、そのデータにアクセスするにはp.then()を実行します。だから、あなたの返されたデータ構造に約束を入れ、呼び出し元はそこから約束にアクセスできます。

あなたの他の選択肢は、あなたの関数からの約束を返すだけで、すべての返されたデータをその約束の解決された値にすることです。

関連する問題