のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,490,769人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.141 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    154 : Name_Not - 2020/12/07(月) 13:57:53.30 ID:???.net (+30,+29,-19)
    ひさびさにjavascriptいじってますがpromiseの概念がさっぱりわかりません
    これっていつごろから当たり前に使われはじめてますか?
    155 : Name_Not - 2020/12/07(月) 14:32:24.68 ID:???.net (-28,-29,-16)
    >>154
    ES6なので2014~2015年頃から
    156 : Name_Not - 2020/12/07(月) 15:46:56.86 ID:???.net (-23,-29,-34)
    >>154
    プロミスは非同期(イベントが起きたタイミング)で、事前に設定しておいた正常/エラー処理関数を呼び出してくれるクラス
    これが無い時代は、例えばHTTP通信でサーバが結果を返してくれるまで処理が止まる(同期)
    157 : Name_Not - 2020/12/07(月) 18:52:59.21 ID:???.net (+3,+15,+0)
    いやいやw
    158 : Name_Not - 2020/12/07(月) 19:03:31.46 ID:???.net (+20,+29,-4)
    ん、止まらなかった?ならすまん
    159 : Name_Not - 2020/12/07(月) 20:23:50.85 ID:???.net (+27,+29,-42)
    普通は結果に対して何をするかでロジックを書くが、
    プロミスは結果が出てるかもしれないし、まだ出ていないかもしれないという抽象体で
    それに対する処理もまたプロミスとなるということが味噌でしょ
    160 : Name_Not - 2020/12/07(月) 21:21:53.21 ID:???.net (-24,-29,-38)
    >>158
    Promiseがない時代はsetTimeoutだったりXMLHttpRequestだったり
    コールバック形式で非同期をサポートしてるAPIがあってそれを使ってた

    http://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests
    161 : Name_Not - 2020/12/07(月) 21:24:48.64 ID:???.net (+27,+29,-23)
    「プロミス」と書くと貸金屋さんっぽいな
    162 : Name_Not - 2020/12/07(月) 21:47:16.93 ID:???.net (+33,+30,-117)
    Promiseは「処理が終わったら結果をこの箱の中に入れておきますから」という箱

    その箱に対して「結果が出たら箱の中身を取り出して次にこの処理をしてね」という
    処理の予約を付け足すことができる

    付け足された処理も「終わったらこの箱に結果を入れておきますから」というまた別の箱を返す

    終わってるかもしれないし終わってないかもしれないというコンテキストで値を包む箱がPromise
    そのコンテキストを楽に処理できるようにするための機能がいくつか付いてくる箱
    163 : Name_Not - 2020/12/07(月) 22:23:26.06 ID:???.net (-24,-30,-209)
    >>154
    初期の頃からある資料はこれだったかな?
    http://wiki.commonjs.org/wiki/Promises

    概念的には結構前から有るはずだが、JavaScriptに登場したのは2009年頃
    このページを見る限りフレームワークのDojoがDeferredとして取り入れた

    その後CommonJSでPromise/AやらBやら、いろんな仕様で検討が行われた
    とはいえCommonJS自体がそんなに使われていたわけじゃないので
    この時代に気づいている人は少ないと思う

    多くの人がPromiseを認識したのは2011/1にリリースされたjQuery 1.5のDeferredだろう
    当時のDeferredは今のPromiseとは仕様が異なるが概念的には同じもの
    Deferredとはなんぞや?と人々が四苦八苦したのはこの頃

    そしてES6でPromiseとしてJavaScriptの仕様になったのが2015年だね
    もちろんその少し前からES5で使えるPromise実装はでていた

    つまりは10年ぐらい前から使われ始めてた
    168 : Name_Not - 2020/12/09(水) 06:38:51.06 ID:???.net (-27,-30,-69)
    V8だと3.23には実装が移されたがそれはDOM PromiseV8推しの独自Promiseであって
    仕様にほぼほぼ準拠したのはようやく4.9になってから
    要するに30~50くらいは実はDOM Promiseだった
    169 : Name_Not - 2020/12/09(水) 10:11:33.67 ID:???.net (-17,-6,-3)
    >>168
    で?
    171 : 154 - 2020/12/09(水) 21:12:32.00 ID:???.net (-26,-29,-48)
    ようやく書けた(;´Д`) bbx規制食らってました
    皆様レスありがとうございます
    大変参考になりました
    jQueryのDefferdという別アプローチを示していただけたのが幸いして
    いい資料にありつけて結構理解は進んだと思います
    172 : Name_Not - 2020/12/12(土) 21:49:10.77 ID:???.net (-26,-29,-35)
    ブラウザの戻るボタンで戻ったとき、どこのページのURLから戻ったのかURLを取得する方法は?
    document.referrerでは取得できませんでした
    174 : Name_Not - 2020/12/12(土) 22:41:42.21 ID:???.net (-21,-19,-21)
    iframe 内は、自分のサイトじゃなく、別人のサイトだから、アクセスできないのでは?
    176 : Name_Not - 2020/12/12(土) 23:36:00.91 ID:???.net (-12,-5,-8)
    >>175はスクレイピング用ね
    自分がWebサイト提供側ならやめとけ
    177 : Name_Not - 2020/12/13(日) 10:50:39.50 ID:???.net (+24,+29,-33)
    >>172
    SPAで設計しとけば当然分かる
    その範囲で判決できないのなら無理・無謀
    182 : Name_Not - 2020/12/15(火) 23:52:08.27 ID:???.net (-27,-30,-171)
    VSCode の拡張機能、open in browser では、ローカルファイル・アクセスだから、CORS 制限あり
    file:///C:/Users/Owner/Documents/test.htm

    一方、Live Server では、サーバーを立てているから、CORS にならない
    http://127.0.0.1:5500/test.htm

    同様に、コマンドプロンプト・PowerShell から、
    1-liner で、Ruby で作られた遅いウェブサーバー、WEBrick を起動すると、
    ruby -run -e httpd . -p 8080

    これも、サーバー経由だから、CORS にならない
    http://localhost:8080/test.htm

    Ruby on Rails では、Node.js のwebpack-dev-server を使っている
    183 : Name_Not - 2020/12/16(水) 00:24:41.85 ID:???.net (-11,-4,-18)
    Ruby でNG登録しとくと捗るぞ
    184 : Name_Not - 2020/12/16(水) 06:37:11.27 ID:???.net (+22,+29,-5)
    何がどう捗るの?
    185 : Name_Not - 2020/12/16(水) 10:23:52.07 ID:???.net (+27,+29,-32)
    このrubyさんはあちこちでrubyならrubyならって言ってるが
    誰もrubyの質問なんてしてないんですよ?
    糖質なんですか?いい加減にしてください!!!!
    186 : Name_Not - 2020/12/16(水) 19:07:14.20 ID:???.net (-29,-30,-104)
    とあるショートコーディングで、
    C=[t=[b=[{max:M,min:N,random:R}=Math]]];
    というのがあったのですが、
    {max:M,min:N,random:R}=Math
    は分割代入でM,N,Rがそれぞれmax,min,random 関数になってるのは
    理解できたのですが、その外側のC=[t=[b=[...の部分はそれぞれどういう意味を持っているのでしょうか?
    また、この記法に何か特別な名前はあるのでしょうか
    188 : Name_Not - 2020/12/16(水) 23:14:34.94 ID:???.net (-26,-29,-8)
    展開するとこうかな。最初の3行より後は意味があるとは思えないけど…
    M = Math.max;
    N = Math.min;
    R = Math.random;
    b = [Math];
    t = [b];
    C = [t];
    189 : Name_Not - 2020/12/17(木) 23:07:06.79 ID:???.net (+21,+15,-94)
    select で選択した項目のvalueを引数としてメソッドを呼ぶ…という作りにしたいのですが、
    2度目にメソッドを呼び出すとエラーがでてしまいます。

    単純に上書きされて呼び出せると思っていたのですが、何が工夫が必要なのでしょうか?
    190 : Name_Not - 2020/12/17(木) 23:10:19.09 ID:???.net (+30,+29,-22)
    >>189
    ちょっと言ってることわからないから
    サンプルコードとエラーメッセージの内容を書いて
    191 : Name_Not - 2020/12/17(木) 23:52:24.28 ID:???.net (-24,-30,-205)
    >>189
    どうも
    メソッドの作りが複雑でエラーは直接関係無さそうなもので、 Uncaught Error と出ています。

    作りは簡略化していますが下記のような感じです。
    select のプルダウンで選択した項目の value を引数としてスムーススクロールの easing関数を
    都度変更する…といった感じです。
    初回は問題ないのに、2回目の呼び出しでエラーが出ています…

    <select id="easingSelect">
     <option value="linear">linear</option>
     <option value="easeOutExpo">easeOutExpo</option>
     ...
    </select>

    var obj = {
      easing: 'easeOutExpo',
      ...
    }
    var easingSelect = document.getElementById('easingSelect');
     easingSelect.addEventListener('change', function() {
      var value = easingSelect.value;
      obj.easing = value;
      scroll(obj);
    });
    192 : Name_Not - 2020/12/18(金) 14:41:48.00 ID:???.net (-27,-30,-97)
    何回か選択して、F12 開発者ツールのコンソールで確認すると、ちゃんと代入されているから、
    scroll という関数内の処理が、間違っているのでは?

    obj.easing = easingSelect.value;
    console.log( obj );
    scroll( obj );

    出力
    {easing: "easeOutExpo"}
    {easing: "linear"}
    194 : Name_Not - 2020/12/18(金) 19:34:00.02 ID:???.net (+27,+29,-14)
    それができたらこんなとこにコネーよw
    196 : Name_Not - 2020/12/18(金) 21:55:15.25 ID:???.net (-23,-30,-43)
    まずvar easingSelect = document.getElementById('easingSelect');
    とする時点でバカ
    Id属性を持つ要素はそのId名でwindowに登録される
    この1文が丸々不要
    197 : Name_Not - 2020/12/18(金) 22:13:41.96 ID:???.net (+24,+29,-2)
    >>196
    お前がアホやろww
    ネタならいいんだけど
    199 : Name_Not - 2020/12/18(金) 23:53:09.69 ID:???.net (+27,+29,-82)
    >>198
    ネタじゃなくマジだったのかーww
    グローバル経由でアクセスできてもそれに依存するコードは書くなって話

    そんなコード書いてたら速攻辞めてもらうわ
    200 : Name_Not - 2020/12/19(土) 00:41:35.75 ID:???.net (+21,+28,-19)
    で?どうせ理由説明できないんだろw
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について