2つの実用的なアプリケーションのJSジェネレータ

継続する()次を呼び出すことにより、停止状態マシン非同期遭遇利回りとして動作するための発電機。2つの実際の開発のアプリケーションを説明するための発電機と今日。

1、懸賞

関数描画(COUNT){//シミュレー描画
    のsetTimeout(関数(COUNT){ 
          にconsole.log( `さらに残り$ {} chance`カウント);! 
    }、 1000 ); 
} 

関数generatorDraw(COUNT){//ジェネレータを生成します関数
     一方(COUNT> 0 ){ 
        COUNT - ; 
        収率ドロー(COUNT); 
    } 
} 

beginDrawせ(3)= generatorDraw;   // これは、通常、サービスコールの3末端から得られ、

CONST BTN =のdocument.createElement(「ボタン' ); 
btn.innerText ='描く' ; 
btn.addEventListener( 'クリック」、関数(){ 
      beginDraw.next()。
})
document.body.addpendChild(BTN)。

 

あなたは回数を減らす達成するために次の時間を呼び出すように、ボタンのクリックするたびに、もちろん、もちろん、あなたはまた、ロジックを毎回行うことができ、毎回論理実行を描くので、禁止ボタンをクリックします。このもう少し厳しいです。

 

2、ロングポーリング

 ロングポーリングの前にタイマーが連続アクセスで指定されたインタフェースです。現在のブラウザのビューでのWebSocketは非常に良いされているサポートしているので、それらのほとんどは、直接のWebSocketを使用することができますが、これは約アイデアの発電機を使用することによってシミュレートすることができます。

関数 * AJAX(){     // アナログAJAXリクエスト 
    収率新しい新しいプロミス((解決、拒否)=> { 
        たsetTimeout(関数(){ 
            解決({コード: 0 }); 
        } 200である
    })
} 


関数(プル){ 
    ジェネレータLET = アヤックス(); 
    のlet STEP = generator.next(); 
    step.value.then(RES => {
         IF!(res.codeが== 0){    // データは、前に取得し、時間を比較したいです、それは異なる、同じをポーリングし続けた場合、出力し 
            たsetTimeout(関数(){ 
                にconsole.log(データが更新されていない`、poll`し続ける); 
                プル(); 
            }、 1000年
        } { 
            にconsole.logは(RES); 
        } 
    })
} 

()引っ張ります。

 

おすすめ

転載: www.cnblogs.com/wjyz/p/11102379.html