LoginSignup
10
10

More than 5 years have passed since last update.

setTimeoutに引数渡す方法

Last updated at Posted at 2013-10-12

色々と面倒だったけど頑張ったらなんとなったので。

要はテキスト入力フォームの値が変化してから一定時間変わらなかった時に、イベントを発生させたいわけです。

coffeescript
    startVal = $("#input").val()
    setTimeout ->
      do (val = startVal) ->
        if val == $("#input").val()
          Config.log "test : #{val} #{$("#input").val()}"
        else
          Config.log "invalid : #{val} #{$("#input").val()}"   
    ,1000
javascript
     startVal = $("#input").val();
     setTimeout(function() {
       (function(val) {
          if (val === $("#input").val()) {
            Config.log("test"));
          } else {
            Config.log("invalid"));
          }
        })(startVal);
      }, 1000);

メモ程度に自コードから抜き出して整形しただけなので、動くかは微妙。特にJSはcoffeeのコンパイルから抜き出して整形してる感じ。あくまでイメージ程度に。

使い所

ログインIDの利用可能バリデーションとか。APIめちゃクチャ投げられるの嫌いな人向け
(というか想定API応答時間分は間隔空けないと結果の戻りが順不同だから面倒だったり)

雑感

coffeeの即時関数の書き方が面倒だった。
引数が最初に来るので、

coffeescript
    setTimeout ->
      do (val = $("#input").val()) ->
        if val == $("#input").val()
          Config.log "test : #{val} #{$("#input").val()}"
        else
          Config.log "invalid : #{val} #{$("#input").val()}"   
    ,1000

とか書いてても違和感なくて、コンパイル済みのコード見てようやく気づいた。

10
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10