2017-01-05 3 views
0

live exmaple複数の方法

私は順序で印刷することを期待しているだろう

Ajaxが
  • は、AJAXの結果を得る結果送信する前に読み込んで画面上の
    • 電源を入れて、レコード
    • ローディング画面を閉じる

    次のコードはあなたのケースでundefined(すぐに実行し、その戻り値され実行されること、そして私がmyFunc1、あなたがRx.Observable.of(myFunc1())を書くときことに注意してください

    var openLoadingPage$ = Rx.Observable.create(function(observer) { 
     
        console.log("open..."); 
     
        observer.complete(); 
     
    }); 
     
    
     
    var closeLoadingPage$ = Rx.Observable.create(function(observer) { 
     
        console.log("close.."); 
     
        observer.complete(); 
     
    }); 
     
    
     
    var ajax$ = Rx.Observable.create(function(observer) { 
     
        //todo:get ajax result 
     
        observer.next("hello world"); 
     
        observer.complete(); 
     
    }); 
     
    
     
    var result$ = Rx.Observable.of(
     
        openLoadingPage$, 
     
        ajax$.delay(2000), 
     
        closeLoadingPage$) 
     
        .concatAll(); 
     
    
     
    result$.subscribe({ 
     
        next: (value) => { 
     
        console.log("get ajax result:", value); 
     
        } 
     
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.1/Rx.js"></script>

  • 答えて

    1

    を書くための他の方法があるかどうかをお尋ねしたいと思いますなぜなら、それがないからです)は、オブザーバブルの単一のイベント値になります。

    (あなたがconsole.log("complete")の戻り値を渡したときに、コールバックを取るsubscribeと同じ問題、)

    あなたはおそらく最後の部分のために).subscribe(() => console.log("complete")を書き込むことによって、より多くの成功を持っているつもりです。 FUNC部分については

    は、それはあなたが達成しようとしているものを伝えるのは難しいのですが、ここでの試みです:

    function myFunc1() { 
     
        console.log("myFunc subscribe called"); 
     
        return "f1" 
     
    } 
     
    
     
    function myFunc2() { 
     
        console.log("myFunc2 subscribe called"); 
     
        return "f2" 
     
    } 
     
    
     
    var myFunc1$ = Rx.Observable.defer(() => Rx.Observable.of(myFunc1())); 
     
    var myFunc2$ = Rx.Observable.defer(() => Rx.Observable.of(myFunc2())); 
     
    
     
    myFunc1$ 
     
        .delay(2000) 
     
        .concat(myFunc2$) 
     
        .subscribe(console.log);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.1/Rx.js"></script>

    +0

    おかげで、それは動作しますが、私は最終的に取得したいですサブスクリプション実装が行われるため、質問を書き直す必要があります –

    関連する問題