SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Yahoo! UI Library Ver.3 を使ってみよう

Yahoo! UI Library3(YUI3)の標準オブジェクト

Yahoo! UI Library Ver.3 を使ってみよう(3)

  • X ポスト
  • このエントリーをはてなブックマークに追加

待ち行列処理

 待ち行列に関する処理はモジュールyuiのクラスQueueにまとめられています。Queueは先入れ先出し方式で行列を作ります。バス停などの行列のように、先に並んだ人が先に乗る(目的を達成する)ことができる行列です。

 データの入力するところが2箇所以上あり、入力データによる計算処理は1箇所でしかできない場合など、先に来たデータから処理をしたいとき待ち行列が使われます。待ち行列の処理は入力タイミングと出力タイミングが同期しなくても処理ができるメリットがあります。

待ち行列処理の一覧

 Queueクラスに含まれるメソッドは、以下の通りです。

Queueのメソッド
メソッド 引数 概要
add(o) o:オブジェクト 要素を待ち行列に追加
next() なし 取り出せる要素を取得
remove() なし 取り出せる要素を除去する
size() なし 現在待ちの要素数を取得

 待ち行列に要素を追加したり、取り出したり、除去などを行うメソッド類です。

待ち行列処理の書き方

 4個の要素を順不同にクリックして、クリックした順に取り出す例題を考えてみました。下図は実行画面と4個の要素をクリックしたところです。

起動時の図
起動時の図
図2:4個の要素をクリックした図
図2:4個の要素をクリックした図
[リスト7]Queueのメソッドの書き方(queue.html)
YUI().use('node', function(Y) {
    var button1 = Y.one('#button');
    var d1 = Y.one('#demo1');
    var d2 = Y.one('#demo2');
    var d3 = Y.one('#demo3');
    var d4 = Y.one('#demo4');
    var o = Y.one('#out');
    var q =new  Y.Queue();    //(1)
    var s="";
    var d;
                //(2)
 d1.on('click', function(e) {q.add(d1); s=s+d1.get('text'); o.set('text',s); });
 d2.on('click', function(e) {q.add(d2); s=s+d2.get('text'); o.set('text',s); });
 d3.on('click', function(e) {q.add(d3); s=s+d3.get('text'); o.set('text',s); });
 d4.on('click', function(e) {q.add(d4); s=s+d4.get('text'); o.set('text',s); });

    button1.on('click', function(e) {
       s="";
       if(q.size() !=0){
        d=q.next();     //データの取り出し(3)
        o.set('text',d.get('text'));
       }else{
        o.set('text',s);
       }
    });
});
</script>
  ...中略...
<body>
    <input type="button" value="押してください" id='button'><br>
    <div id='demo1'>東</div>
    <div id='demo2'>西</div>
    <div id='demo3'>南</div>
    <div id='demo4'>北</div>
    <br>
    <div id=out>セットデータ</div>

</body>

 (1)はQueueの宣言です。今回qとしました。(2)以下で要素をクリックする時、待ち行列に追加しています。ボタンを押すと、(3)でデータを取り出しています。

 例題は4個クリックして後、ボタンを4回押して確認するものです。

次のページ
その他

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Yahoo! UI Library Ver.3 を使ってみよう連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 横塚 利津子(ヨコツカ リツコ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5005 2010/04/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング