2016-09-12 24 views
1

コルドバ用のPhoneGap-pluginのプッシュは、次の構文を使用していくつかの機能がありカスタムコルドバpushNotificationラッパー観測可能

function name(successCallback(),errorCallback(),options) 

私が観察をラッパー関数を記述して返すようにしたいが、私は上の少しこだわっていますangular2のtypescriptを使用してそれを作成する方法。

ので

name.subscribe((data)=>{...},(err)=>{}) 

これまでのところ私はほとんど唯一のhttpのように観察既存に加入しました。

ので、それは事前に助けを

public unregister(options):Observable<any>{ 
    if(window.PushNotification){ 
    window.PushNotification.ungregister(...) 
    } 
} 

おかげのようになります!

+0

既にプッシュ通知の登録を解除できるようです。あなたはそれを観測可能なものにラッピングすることで何を達成したいと考えていますか?あなたが意図を知っていることは、解決策を提供するのに役立ちます。 – Asperon

+0

unregsiterは単なる例で、私は一般的にそれを達成する方法に興味があります:) 私の特定の使用例では、基本的に与えられたmethodesをラップし、observablesを返すライブラリを構築しようとしています。 –

答えて

1

createを使用するか、コンストラクタを使用して新しいObservableを作成することができます。

//Higher order function for binding a cordova style method to a method 
//that returns Observables 
function bindCordovaCallback(fn) { 
    //Returns a new function 
    return (...opts) => 
    Rx.Observable.create(observer => { 
     // This assumes a single call to success will be made 
     const nextCallback = (v) => { observer.next(v); observer.complete(); } 

     const errCallback = (e) => observer.error(e); 

     //Invoke the passed in method. 
     fn(nextCallback, errCallback, ...opts); 

     //Return empty unless you have some cancellation logic 
     return Subscription.EMPTY; 
    }); 
} 

const nameObservable = bindCordovaCallback(name)(opts); 

//Each subscribe will reinvoke the underlying method just like $http in angular2 
nameObservable.subscribe(data => {...}, err => {...} 
+0

答えをありがとう! 1つのquesiton、私はサブスクリプションにオプトをどのように渡すだろうか?現在私はこれを呼び出すと「名前オプションを見つけることができません」というメッセージが表示されます。 const nameObservable = bindCordovaCallback(name)(opts); –

+0

はい、 'opts'パラメータを宣言する必要があります。私は実際にあなたが何を渡すのかは分かりませんが、 'bindCOrdovaCallback(name)(opts)'では、渡されるオプションを呼び出し側が定義する必要があります。 – paulpdaniels

+0

ありがとう!私はそれを働かせてテストしました! –

関連する問題