のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,543,501人
昨日: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 (-13,-6,-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 スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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