トップページ⇒tech
1002コメント464KB

+ JavaScript(ECMAScript)質問用スレッド vol.122 + [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/08/29(月) 01:23:24.09ID:MUTWRWKo
プログラマ板の趣旨にあわせてブラウザ限定ではなくサーバーサイドJavaScriptや
トランスパイラなどの関連技術の話題も取り扱うように変わりました。

ECMAScriptの言語仕様の話題。最新ECMAScriptによるモダンな書き方、Promiseやasync/awaitを
使った非同期プログラミング。ES2015、2016、2017等の最新ECMAScriptをブラウザで今すぐ使う方法、
ビルド環境やbowerやnodeのパッケージを使う方法等、モダンなJavaScript環境についての幅広い話をしましょう。

ECMAScript対応実行環境一覧(ブラウザやbabelを含む)
http://kangax.github.io/compat-table/es5/
http://kangax.github.io/compat-table/es6/ (= es2015)
http://kangax.github.io/compat-table/es2016plus/
http://kangax.github.io/compat-table/esnext/

JavaScriptとは?
もともとMozillaの前身のNetscapeが作った言語であり本来のJavaScriptはFirefoxの実装のみです。
JavaScriptの正式な仕様名はECMAScriptです。ですが一般に使われているとおり
ChromeやEdgeで使う言語もJavaScriptとしてこのスレでは扱います。
Firefox等のJavaScript実装は最新のECMAScriptに準拠しています。

※DOMはブラウザが提供しているものでありJavaScript(ECMAScript)の範囲外です。
なのでDOMを使ったプログラミングは原則としてこのスレの対象外です。
DOMはwindowオブジェクト(ブラウザのホストオブジェクト)経由で
参照するもので、window自体、window.document、window.Workerなどです。
これに関する話題はWeb制作板の下記のスレに移動してください。

+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1467906819/
+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/hp/1463395557/

前スレ + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1468158373/
0697デフォルトの名無しさん2016/11/01(火) 03:03:10.88ID:lWEkG1Wt
「Try Haxe」ヘックスで、試してみ

AltJSのHaxeでは、ソースコードを文字列化して送っても、型が消えない。
大規模開発に向く
0698デフォルトの名無しさん2016/11/01(火) 08:40:03.75ID:MkSUKVBa
>>689
分かった分かった。
君とここの住人はクラスに対する考え方が違うから話が噛み合っているようで無かったみたいだ。

要するに、クラスベース言語では通常捨てオブジェクトを作るにもクラスを設計するしか無いので迷わないが、
JSではプレーンオブジェクトを扱いたい場合にどうしたら良いかという話でしょ?

それならわざわざクラスを設計する必要がないというのが一般的な話だ。
オブジェクトの型ごとに空のクラスを置くのは全くもってJS流ではない。

JSでは、オブジェクトはより自由で気軽なもの。
オブジェクトを作りたいというだけなら、リテラルを使う。

幾つも同じタイプのオブジェクトを生成したい場合関数にて生成するが、
そういった場合それらのオブジェクトに共通した操作を定義したい場合も多い。
ここで初めて出てくるのがクラスだ。

つまりクラスとは、オブジェクト生成に必須のものでは勿論無いし、
あくまでオブジェクト指向の上で構造化のプログラミングする中で出て来る
手法・ツールの一つという位置づけでしか無い。

よって話を戻すと、今回の場合Personクラスを作る必要はない。
というかJSを使いに取っては完全にあり得ない、考えたこともない思考なので、混乱が生じた。
作る必要はないというか、そのような事を考えるのが異常なレベル。
0699デフォルトの名無しさん2016/11/01(火) 10:02:53.69ID:JdgZau7x
またバベル君が狂い始めてるのか。
0700デフォルトの名無しさん2016/11/01(火) 21:13:39.04ID:iw2Pppzi
>>698
お前がJS流とかきめんなや。
クラスを使うかどうかは規模やどう使うか決まる。
言語で決まるわけじゃない。

一般的なクラスとして扱いたいならばクラスにした方がいい。
人間の感覚とコードをできる限り近づけるようにするべきだ。

>>699
呼んだ?w
0701デフォルトの名無しさん2016/11/01(火) 21:24:11.29ID:MkSUKVBa
>>700
いや、今話されてるのは言語で決まる類の話だ。
古き良きクラスベース言語では原則実態であるオブジェクトを作るには
雛形であるクラスを設計しなければならない。
しかしプロトタイプベースでもあるJSではその限りではない。
違いがあって当然。
0702デフォルトの名無しさん2016/11/01(火) 21:34:38.58ID:iw2Pppzi
>>701
なんで古い前提で話をしてるんだよw

新しいJavaScriptではclass構文が追加された。
当たり前だが気まぐれで追加されたわけじゃない。

これが必要とされたからだ。
であれば、どちらかと言えばclassを使うのが適切な場面では
classを使う方がいい。

プロトタイプベースから”改良"されてclass構文が追加されたんだよ。
0703デフォルトの名無しさん2016/11/01(火) 21:46:38.71ID:o4WGeuVh
アロー関数とクラス構文使わない奴は馬鹿と思う
アローのthisそのまま使えるのはチョー便利
長いfunction書かなくていいし
0704デフォルトの名無しさん2016/11/01(火) 22:07:12.64ID:x6lATtpW
誰に向かって言ってるの?
0705デフォルトの名無しさん2016/11/01(火) 22:10:49.88ID:iw2Pppzi
分割代入もなにげに便利だよな。
最初はあまり使わないかなとも思ったけど
関数の引数で分割代入とか目からうろこのテクニック
Promiseと組み合わせて使うとほんと便利
0706デフォルトの名無しさん2016/11/01(火) 22:20:38.57ID:MkSUKVBa
>>702
>>どちらかと言えばclassを使うのが適切な場面ではclassを使う方がいい
とは一体何と何を比較して物を言っているの?
もしかしてclass構文と従来の関数+prototypeを比較した話をしているの?

自分はそんな話は全くしていないんだけど。
オブジェクトリテラルは君も使うでしょ?
それが無い言語、シンプルな使い捨てオブジェクトでさえも
そのための使い捨てクラスを作って、newするのが基本な言語もある。
それとJSは違うという話をしてるんだけど。

それとプロトタイプベースから改良されてという意味も分からない。
今まではプロトタイプベースの皮を被った癖のあるクラスシステムしか用意されてなかった
プロトタイプベースはあくまで言語の縁の下でしかなく、
自由に触れられず結局中途半端なクラスシステムに縛られていた。

プロトタイプベースが真に開放され、インスタンスベースなプログラミングが出来るようになったのは
class構文が搭載されたのと同じES2015から。
つまり"改良"はプロトタイプベースからではなく、プロトタイプベースの皮をかぶった中途半端なクラスシステムから。
その壁に穴を開けて下のプロトタイプベースと、上のより良いクラスシステムを見通せるようにしたというのが"改良"だ。
0707デフォルトの名無しさん2016/11/03(木) 22:59:33.56ID:cb4Y2Yz9
つうか、jscript.netとかswfのes4とか、十数年前からみんなclassて書いてるよ。
0708デフォルトの名無しさん2016/11/04(金) 01:26:18.56ID:LmRSOsos
誰もclass構文の話はしていない
0709デフォルトの名無しさん2016/11/04(金) 19:37:01.89ID:eNDgRS9h
>>708
JavaScriptのスレで話す内容ではない。
0710デフォルトの名無しさん2016/11/04(金) 21:21:51.64ID:LmRSOsos
JSのプロトタイプベースに纏わる話は十分このスレの担当範囲だろうよ
0711デフォルトの名無しさん2016/11/07(月) 21:32:53.88ID:toRb2seg
だれかCancelTokenについて話さない?
Promise.prototype.cancelよりもどこがどう優れてるのかとか。
0712デフォルトの名無しさん2016/11/07(月) 22:10:09.38ID:883psKTk
せめてリンク貼れや
0713デフォルトの名無しさん2016/11/07(月) 22:35:42.50ID:toRb2seg
ほい
https://github.com/tc39/proposal-cancelable-promises
0714デフォルトの名無しさん2016/11/07(月) 22:46:11.29ID:883psKTk
> The cancel tokens of this proposal are heavily inspired by Kevin Smith's design sketch,
> which are in turn inspired by the .NET task cancelation architecture.
> They are discussed further, in much more detail, in "Cancel Tokens".

inspired by the .NET task cancelation architecture か
なら良さそうだな。
0715デフォルトの名無しさん2016/11/08(火) 07:34:19.94ID:Cn2WM8Zt
そう、これが違和感があるのって、taskのcancelationだからなんだよ。
キャンセルの仕組みを外に出した方が応用が効いて便利ってことは分かるけれど、
PromiseってあえてjQueryなどのDefferedと違って内部を外に出さないように設計したよね。

将来的には増やす案があったし、V8なんかは暫く独自機能残してたけど、立ち消えになったよね。
Promiseはあくまでいつか確定される値の抽象だからそんなの付けるべきでないって意見が強かったよね。

逆にそうだからこそ、キャンセルの仕組みを外に出したとも見れるけれど、
プロミスの状態で考えると、解決・棄却・その他は対等なので、
一つだけ操作・利用の仕組みが大きく違うのが違和感ある。
0716デフォルトの名無しさん2016/11/08(火) 09:02:08.41ID:le3Xpa4U
> PromiseってあえてjQueryなどのDefferedと違って内部を外に出さないように設計したよね。
というか、もともとキャンセルの仕組みもついでに処理途中の通知のシステムもないでしょ?

非同期処理をネストしないで書くための方法にとどめておくべきだよ。
asyncとawaitというシンタックスシュガーが使えない環境で
これらを使わずに同じように書くための仕組み。

それ以外は「タスク処理」をするためのフレームワークであって
Promiseとは別に作るべき。

> プロミスの状態で考えると、解決・棄却・その他は対等なので、
Promiseがやるのは順次処理(次の行へ進む)とエラー(例外)だけ
そもそもタスクとして考えるのがおかしい。

つーかついこの間たまたまタスク処理的なものを作ったけど
キャンセルとか状態の通知を追加するとPromiseとは呼べないものになったよ。
内部的にはFetch APIとかPromise使ってるんだけど、それを囲うための
タスク処理とそのタスクを管理する仕組みはイベントベースにせざるを得なかった。
Promiseでは無理
0717デフォルトの名無しさん2016/11/08(火) 09:41:38.26ID:le3Xpa4U
なんでタスク管理の仕組みがPromiseじゃ無理かって言うと独自のメソッドが必要になるから。

タスクを管理するためのメソッドは色々ある。
タスクの中止やタスクからの情報通知だけじゃなくて
タスクの一時停止や再開、タスク情報の設定
(例えばダウンローダーみたいなのであれば保存するファイル名の変更とか)

Promiseでは情報がPromiseオブジェクトしか返ってこない
例えばFetch APIはPromiseオブジェクトを返すが、これはFetchオブジェクトじゃない。
Fetchオブジェクトに対してcancelとか色々やるならわかるが、
Promiseにcancel生やすなら、Promiseが内部的にFetchオブジェクトのcancelに
処理を渡さなきゃいけない。他のメソッドも同様。

そしてPromiseにキャンセルがあると思いきや、イベント通知。
つまりFetch APIを例にすると進捗状況だね。その進捗状況のイベントハンドラは
Fetchオブジェクトを知ることができるべきだろうけど、じゃあイベントハンドラで
キャンセルしたいときは? 方やPromiseのcancel、方やFetchオブジェクトのcancelじゃわけがわからない。
イベントハンドラの中でPromiseオブジェクトを取得できるのも意味不明。

Promise内部やPromsieの引数にPromiseを生成したオブジェクトを参照できるようにする方法も考えられるけど
Promiseのチェーンは前の戻り値を引き継いでいけるという仕組みだから使い方がおかしい。

時間切れだからここまでにしておくけど、ようするにPromiseでタスク管理をしてはいけないという話
0718デフォルトの名無しさん2016/11/08(火) 09:46:21.72ID:le3Xpa4U
で、俺の意見としてはPromiseはこのままでいいから
別でタスク管理の仕組みを作れ。
タスク登録して優先順位とか並列実行とか
めんどくさかったわw
0719デフォルトの名無しさん2016/11/08(火) 10:58:01.33ID:Cn2WM8Zt
>>718
いや、君の意見は部分的にはもっともだよ。でも現実そうでないのがなんで?って話。

CancelTokenは、それ自体では完結してない。
あくまでPromiseに「解決」・「棄却」の2つの状態に更に「その他」を加えることが中核。
つまりPromiseが君の言うPromiseじゃなくなることまでは確定されてるのよ。

あくまでそのトリガーを、解決や棄却と同じ形でせずに、
外部からコントロール出来るようにするということでしかない。

だからもっと独立したTaskを作らなかったのが何で?って思うし、
Promiseを継承したCancellablePromiseでもなく、.cancelメソッドを生やすだけでもなく、
どうしてこういう今までのJSの流れと違う、ある意味中途半端で特殊な形にまとめたのかなって疑問。
0720デフォルトの名無しさん2016/11/08(火) 10:58:54.93ID:oVtTKQIX
ゴミ
0721デフォルトの名無しさん2016/11/08(火) 11:04:57.61ID:Cn2WM8Zt
だから自分が言いたいことを整理すると、
どうしてPromiseとTask管理のキャンセルの仕組みを悪魔合体させたのかということ。
そしてそれが幾らか便利なのは分かるが、
簡単に.cancalメソッドを付けたりするくらいでも多くの場合十分なのではないかということ。
0722デフォルトの名無しさん2016/11/08(火) 19:41:39.60ID:L5B8nS+2
classを定義したのですが、そのクラスのメソッド内のコールバックの中で
別のメソッドを呼び出したいのですがどうすればいいでしょうか??
class MyClass {

 method1();

 method2() {
  xhr.onreadystatechange = function() {
   method1を呼びたい。けど、this.method1じゃだめ
  }
 }

}
0723デフォルトの名無しさん2016/11/08(火) 19:54:23.01ID:nv3pE1Bb
>>722
var that = this; で別変数に入れておいて、xhr.onreadystatechange = function(){ that.method1(); } みたいに使う。
あるいは xhr.onreadystatechange = () => { this.method1(); } みたいにアロー関数を使う。
0724デフォルトの名無しさん2016/11/08(火) 20:02:58.32ID:L5B8nS+2
>var that = this; で別変数に入れておいて、xhr.onreadystatechange = function(){ that.method1(); } みたいに使う。
なるほど。this自体を別の変数に入れておけばよかったんですね・・
自分はvar method1 = this.method1
とメソッド自体を別変数に入れて呼び出してたんですけど、呼び出しは成功するっぽいのですが、
method1の内部でthisをmethod1() { thisほにゃらら }と参照するとthisが未定義になって困ってました。

>あるいは xhr.onreadystatechange = () => { this.method1(); } みたいにアロー関数を使う。
アロー関数は聞いた事ありませんでした。調べてみます。

ありがとうございます。
0725デフォルトの名無しさん2016/11/08(火) 20:36:55.73ID:oXq4xn77
ぶっちゃけstatechangeは滅多と使うものではない。
onload使え、もっと言うとfetch使え。
0726デフォルトの名無しさん2016/11/08(火) 21:22:58.34ID:L5B8nS+2
何が標準でどの資料みればいいのかわかりませんが、
onloadは非標準とか書いてあったので、onreadystatechange使ってました。
onload調べてみます。fetchはなんぞ?
0727デフォルトの名無しさん2016/11/08(火) 21:35:01.22ID:L5B8nS+2
FetchってXHRと全くの別物か。
0728デフォルトの名無しさん2016/11/08(火) 22:01:06.66ID:odPOKtVp
>>722
var that = this; は古い
handleEvent を使えばスマートに書ける
https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener#The_value_of_this_within_the_handler
0729デフォルトの名無しさん2016/11/08(火) 22:13:14.01ID:L5B8nS+2
XHRのエラーハンドリングをまだほとんどしてなかったのですが、
onreadystatechangeだとエラーでstatusが0の時の処理とかあるので、
onloadとonerror使えばすっきりするってことですかね。
ということでonloadとonerrorに書き換えます。
0730デフォルトの名無しさん 転載ダメ©2ch.net2016/11/09(水) 06:22:28.44ID:br65i1Lj

板復帰(OK!:Gather .dat file OK:moving DAT 521 -> 520:Get subject.txt OK:Check subject.txt 521 -> 521:Overwrite OK)0.44, 0.42, 0.41
age subject:521 dat:520 rebuild OK!
0731デフォルトの名無しさん2016/11/09(水) 08:10:50.79ID:HRJGJTih
>>726
もし冗談でなく本当にonloadが非標準と書かれた情報が存在し、
それを見てしまったのなら今すぐに目ン玉を引っこ抜いて洗ったほうが良い。
それは5年以上前の情報だから、けして参考にしてはいけない。
死ぬぞ。
0732デフォルトの名無しさん2016/11/09(水) 14:41:13.38ID:SYPVDf2E
>>726
XHR
https://xhr.spec.whatwg.org/
Fetch
https://fetch.spec.whatwg.org/
0733デフォルトの名無しさん2016/11/11(金) 11:06:53.92ID:hqcaajAu
npm install yarnと
linuxのyumとかapt-getでいれるyarn
どっちを使えばいいんですか?
0734デフォルトの名無しさん2016/11/11(金) 21:39:29.00ID:ENznHnYU
ndenv、nodenv、nodebrewあたりを使ってるならnpmしか選択肢にならない
0735デフォルトの名無しさん2016/11/13(日) 16:04:40.73ID:QhlptiVm
Google翻訳が改善されたというニュースを皆見たと思うが、
これは我々の世界の英語が得意でない者にとって革命だ。
今までは訳すと読むだけで頭が痛くなるような奇妙な日本語が生成されていたが、
今では勉強に集中できる程度に精度が向上している。
0736デフォルトの名無しさん2016/11/13(日) 16:08:36.94ID:foNYoSMf
やったぜ
0737デフォルトの名無しさん2016/11/13(日) 16:32:58.01ID:jy2VGr1W
Promiseって、処理結果を外に出したり、外から値もらったりするときに
レキシカルバインドした変数を介さないといけなくてダサい
もっとカッチョ良い制御構文無いの?
0738デフォルトの名無しさん2016/11/13(日) 16:47:42.97ID:foNYoSMf
>>737
*function
0739デフォルトの名無しさん2016/11/13(日) 16:52:48.84ID:TWR6TIrT
>>737
それ使っても、Promiseが見えなくなるだけで、
「レキシカルバインドした変数」は同じだよな?
0740デフォルトの名無しさん2016/11/13(日) 21:18:16.74ID:nngvad4K
>>737
try-catch
0741デフォルトの名無しさん2016/11/13(日) 21:33:19.82ID:jy2VGr1W
thenのコールバックの戻り値がPromiseだと、新しいPromise作らないで、それを使うのか
配列に複数の値突っ込んでそれを持ち回す事にした

レキシカルバインドした変数に代入する方法では、書き込む方と読み出す方の同期を取るのが厄介
0742デフォルトの名無しさん2016/11/13(日) 21:51:23.69ID:TWR6TIrT
> 書き込む方と読み出す方の同期を取るのが厄介
シングルスレッドなのに何を言ってるのだろうか?
0743デフォルトの名無しさん2016/11/13(日) 23:47:53.73ID:jy2VGr1W
>>742
Promiseは非同期オブジェクトだから
それと同期してない奴が触ったときに処理が完了してるとは限らないんだな、これが
0744デフォルトの名無しさん2016/11/14(月) 00:34:40.39ID:UEPxPzue
>>743
Promiseは非同期処理を同期的に記述できるようにするものなんだが?
同期的に記述してるのに同期をとるのが厄介ってお前理解してないんじゃね?w
0745デフォルトの名無しさん2016/11/14(月) 00:47:56.56ID:8ZP1uHGR
>>743
それと同期してない奴というのはPromiseに組み込めないの?
0746デフォルトの名無しさん2016/11/14(月) 00:49:40.25ID:y8otP/4p
>>744
処理待ちしてる間に別の処理を差し込めるからバインドしたthisの内容が保証されないって言いたいんじゃね
0747デフォルトの名無しさん2016/11/14(月) 01:06:58.66ID:UEPxPzue
>>746
意味わからん。まあ一言言っておくと、保証されないわけがない。
0748デフォルトの名無しさん2016/11/14(月) 01:22:56.04ID:y8otP/4p
>>747
オブジェクトにデータ積んで行くイベントをPromiseで繋げて完了待ちしてる合間に、
ユーザの操作で別イベントが発火したら未完了のデータに触れちゃうし書き換えられもするだろ?
0749デフォルトの名無しさん2016/11/14(月) 01:24:49.33ID:Gl21TU7L
let g;
(new Promise())
.then()
.then(v => { g = v;}) // <==== (1)
.catch();

console.log(g); // <===== (2)

(2)を実行する時に(1)が完了している事は保証されていない
0750デフォルトの名無しさん2016/11/14(月) 01:38:40.81ID:UEPxPzue
>>749
> (2)を実行する時に(1)が完了している事は保証されていない

???

その場合は、(2)を実行する時に(1)が完了していないことが事が保証されてる

Promiseを実行して処理を非同期にした時点で、後回しにされるんだよ。
JavaScriptはシングルスレッドなんだから後回しになった処理が先に終わることはない。
他に割り込まれること無く(2)が実行される。
0751デフォルトの名無しさん2016/11/14(月) 01:40:04.94ID:UEPxPzue
>>748
それはPromise関係ないな。レキシカルバインドした変数も関係ないな。

二つのボタンがあったとして、先にクリックしたほうが
先に変数にデータを入れられるってだけの話だ。
07527502016/11/14(月) 01:43:25.22ID:UEPxPzue
あとついでに行っておくとそのコードはバグってて動かない
もう少しまともなサンプルもってこい
0753デフォルトの名無しさん2016/11/14(月) 01:44:04.31ID:y8otP/4p
>>751
お前……さては同期の意味を理解してないな?

744 名前:デフォルトの名無しさん [sage] :2016/11/14(月) 00:34:40.39 ID:UEPxPzue
>>743
Promiseは非同期処理を同期的に記述できるようにするものなんだが?
同期的に記述してるのに同期をとるのが厄介ってお前理解してないんじゃね?w
0754デフォルトの名無しさん2016/11/14(月) 01:46:54.76ID:UEPxPzue
>>753
理解してないと思ったなら自分の考えを書けよ。
0755デフォルトの名無しさん2016/11/14(月) 01:52:00.66ID:wKdLnPZ8
昔サーバ会社に設定のことで問い合わせしたらさ
「example.jpというドメインは存在しません」
というトンチンカンな返答をもらったことあるんだよ

それに匹敵するくらいの無知さを>>752からは感じた
0756デフォルトの名無しさん2016/11/14(月) 01:54:42.93ID:UEPxPzue
>>755
おまえ馬鹿だろw

今ここで間違ったコードを書く理由がないだろ。
>>749はPromiseの使い方を全く分かってない
ということでしかないんだが。

Promiseを使ったコードを書けないから
どういう動きになるのかを自分で確かめることも出来やしない
0757デフォルトの名無しさん2016/11/14(月) 08:36:58.57ID:Gl21TU7L
>>750
> その場合は、(2)を実行する時に(1)が完了していないことが事が保証されてる

だから何?
逆と対偶って知ってる?
0758デフォルトの名無しさん2016/11/14(月) 08:49:19.57ID:Gl21TU7L
想像力が欠如しているID:UEPxPzueには理解出来できなかったが、
複数の非同期オブジェクトを協調して動かす場合は同期が不可避って事だよ

シングルスレッド? 何それ、美味いの w
0759デフォルトの名無しさん2016/11/14(月) 09:12:07.77ID:UEPxPzue
>>757
どこが逆と待遇なんだよw

保証されてると言ってるだろ。
必ず(2)は(1)よりも先に動くんだよ。
0760デフォルトの名無しさん2016/11/14(月) 09:20:35.38ID:Gl21TU7L
このスレは頭の悪い人が多いな

「逆と対偶って知ってる?」今日1日猶予あげるからよく考えてごらん
0761デフォルトの名無しさん2016/11/14(月) 09:36:25.06ID:UEPxPzue
こいつ前スレかどこかでsetTimeoutが必要だとか言って暴れてたやつだろw
蓋を開けてみれば、下請けに作らせた(嘘だろうなw)独自実装の
PromiseっぽいPromiseではないもの(つまり別物)の話で
そいつにしか関係ない話だってやつ。
0762デフォルトの名無しさん2016/11/14(月) 14:11:42.63ID:SjW+Vo1Y
>>761
俺じゃないよ。
俺は眺めてるw
0763デフォルトの名無しさん2016/11/14(月) 14:29:20.23ID:njlrvKgq
スマンが俺もずっと様子を見ていたが>>737の意味が未だに分からないww
最初はプロミスは基本的に1つの値を流していくため、
非同期処理中沢山の変数を共有しようと思ったら外部変数にするしか無いのが
関数型チックに書ききれなくて煩わしいのかと思ったのだが、そうではないのか?
0764デフォルトの名無しさん2016/11/14(月) 14:30:47.94ID:njlrvKgq
>>760
頭がいいのなら、馬鹿にも分かるように説明しろ
それができないのならお前の中でのことでしかない
0765デフォルトの名無しさん2016/11/14(月) 17:08:18.46ID:SjW+Vo1Y
正直、RxJSが気持ちよすぎてPromiseがあろうが無かろうがどうでも良くなって来てる。俺は。
仕事では使わんけど。
0766デフォルトの名無しさん2016/11/14(月) 17:17:23.31ID:rHIPepSr
>>749
何を当たり前のことをいってるんだ?
非同期処理ならそれが当然だろう
非同期処理を同期処理化したいならawaitを使えばいい
awaitは非同期処理を理解していない初心者が有り難がるが、非同期処理のメリットが全部なくなるきたがるんだよな
0767デフォルトの名無しさん2016/11/14(月) 17:27:11.76ID:kL+E10ET
>>749
実行キューに登録された関数が終了するまでは他の関数が起動することはないから絶対2が先に実行される
0768デフォルトの名無しさん2016/11/14(月) 17:40:50.48ID:0PpRMTCP
>>760
知ってるけど、だから何?
頭が悪いのはお前の方だわ
0769デフォルトの名無しさん2016/11/14(月) 17:44:02.19ID:kL+E10ET
何だ荒らしか
0770デフォルトの名無しさん2016/11/14(月) 17:54:39.16ID:kL+E10ET
俺もjavaから入ったからjsの非同期はjavaのスレッドと思っていたけど(だから何故どこにも排他処理の事が書いてないか疑問だった)、しっかり説明読んでやっと理解出来た
だから初心者には難しいのは知ってる
でも初心者なら普通黙って聞くよね?
0771デフォルトの名無しさん2016/11/15(火) 01:46:02.87ID:b2LTbejx
そう。JavaScriptはシングルスレッドっていうのはそういうこと
非同期処理と非同期は処理がどちらが先に実行されるかは当然わからないが、
非同期処理と同期処理は同期処理が先に実行される。

Promiseを使った時点でそれは非同期処理になる
そしてPromiseは複数の非同期処理を、終わったら次に進むという形に
するものなんだから、どちらが先に実行されるかなんて迷う余地はない。
0772デフォルトの名無しさん2016/11/15(火) 07:10:15.19ID:yv04JlgE
XHRがしっかり扱える程度にコールバックや非同期のこと理解してたら
Promiseなんて排他制御が必要になる部類よりずっと簡単ですぐ理解できると思うけどな
0773デフォルトの名無しさん2016/11/18(金) 17:09:50.58ID:3VtCl+DR
yarnでeslint-config-airbnbインストールできません
たすけてください
yarn global add eslint-config-airbnb
yarn global v0.17.4
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning Incorrect peer dependency "eslint-plugin-jsx-a11y@^2.2.3".
[4/4] Building fresh packages...
warning [email protected] has no binaries
warning No license field
0774デフォルトの名無しさん2016/11/18(金) 17:11:58.65ID:Amerid1m
いやーん
0775デフォルトの名無しさん2016/11/26(土) 14:28:20.17ID:gspGiUEm
JavaScriptやjQueryでObjectをコピーする文法には
馴染めないのですが、そんな事はないですか?
0776デフォルトの名無しさん2016/11/26(土) 18:46:17.35ID:pi8DulB7
>>775
> Objectをコピーする文法
あなたのその表現が馴染めない
シャローコピー?ディープコピー?
0777デフォルトの名無しさん2016/11/27(日) 07:31:30.06ID:T/GZ1EFf
extendとかそう言うやつか。
0778デフォルトの名無しさん2016/11/27(日) 08:53:16.82ID:AMkv8rTe
必要性がないなら馴染む必要もないと思う
0779デフォルトの名無しさん2016/11/27(日) 13:37:49.51ID:wcKeEZPe
>>776
単にコピーと言ったときはシャローコピーだろ
ディープならディープと書く
おまえはキスするときいつも相手に訊くのか?
0780デフォルトの名無しさん2016/11/27(日) 14:09:11.37ID:AZC2UzDM
そりゃ、キスする前にバードキスとディープキスどっちがいいって?
マナーとして聞くでしょうに。
0781デフォルトの名無しさん2016/11/27(日) 15:54:55.51ID:4ldlRD1J
>>775
まずJavaScriptではいかなる方法を使っても
Objectを完全にコピーすることはできない。

だからObjectのコピーではない命令を
あんたが使っているだけにすぎない。

だからあんたがコピーだと思っている文法と
違うわけだ。
0782デフォルトの名無しさん2016/11/27(日) 17:47:28.40ID:mveO+vV3
× いかなる方法を使ってもObjectを完全にコピーすることはできない
○ いかなるObjectをも完全にコピーする方法はない
0783デフォルトの名無しさん2016/11/27(日) 22:08:04.56ID:q8z3Tnre
>>779
ひょっとすると、参照コピーを指しているのかも切れないので、シャローコピーと決めつけるのは早計

var obj1 ={}, obj2 = obj1;
obj1.a = 1;
console.log(obj2.a); // 1

初心者がはまりやすいのはこっちだと思うね
シャローコピーではまるのは Object.assign をディープコピーだと思って使ってしまうとか?
いずれにしても、質問者の情報待ち
0784デフォルトの名無しさん2016/11/28(月) 18:13:43.58ID:E4XiTzNU
Objectのコピーも出来ないとかお前ら初心者過ぎるだろ
0785デフォルトの名無しさん2016/11/28(月) 18:21:10.70ID:KKcrSnYF
JSON化して戻せばコピーできる
0786デフォルトの名無しさん2016/11/28(月) 18:28:48.71ID:By9NqSkN
面倒くさいのでjQueryでコピーしてるわ
0787デフォルトの名無しさん2016/11/30(水) 21:42:56.12ID:0ROmCizq
同一ドメインでpostMessageする場合には、
window.open()で開いた親子関係のウインドウ間のみ可能なのでしょうか?
全く他人のウインドウ同士(同一ドメイン内)でも同様にpostMessageできますか?
試したのですが出来ませんでした。
0788デフォルトの名無しさん2016/12/01(木) 02:35:33.78ID:86kKAE3r
Broadcast Channelで可能
0789デフォルトの名無しさん2016/12/01(木) 08:41:27.60ID:elqpLc9i
>>787
>>775もそうだが、無理に新しい日本語を発明して質問するのは止めてくれ
「全く他人のウインドウ」とは何か具体的に説明すべき

>>775は「Objectをコピーする文法」がオレオレ用語
現存の演算子や制御構文にはObjectをシャローコピー/ディープコピーする機構はない
Object.assignはシャローコピー可能だが、「文法」とはこれいかに?
「文法」が代入演算子を指すなら>>783がしっくりくるが、オブジェクトをコピーが曖昧故に既に複数の解釈が出来てる
知ったかぶりで専門用語を並べ立てるぐらいならコードで説明した方が100倍マシ
0790デフォルトの名無しさん2016/12/01(木) 13:42:59.96ID:rRTfenTZ
>>789
アスペは大変だね
0791デフォルトの名無しさん2016/12/01(木) 14:51:06.99ID:V0GR9lTF
>>789
> 「全く他人のウインドウ」とは何か具体的に説明すべき
「window.open()で開いた親子関係のウインドウ」ではないウィンドウだと、普通なら理解できると思うが。
0792デフォルトの名無しさん2016/12/01(木) 14:53:06.08ID:MTDix4/Z
親子丼と他人丼の関係なら理解できるがw
0793デフォルトの名無しさん2016/12/01(木) 18:22:15.66ID:NluWgpRa
>>791
その要件ならiframe要素からcontentWindowを得ればいいだろう
が、「window.openだけでなく、フレームはダメでこれこれこういうものなんです」と条件を後出しする気がしてならない
0794デフォルトの名無しさん2016/12/01(木) 18:48:17.00ID:V0GR9lTF
>>793
どこからiframe要素がでてきたんだ?
質問するのも大変だなという感想。
0795デフォルトの名無しさん2016/12/01(木) 19:18:46.44ID:FPpa4B9L
仕様書ですら何の説明もなく用語や謎のフレーズが出てくることはよくあるな
0796デフォルトの名無しさん2016/12/01(木) 19:27:18.92ID:NluWgpRa
>>794
>>791の要件は満たしている
「window.open以外」としか情報がないのにどう解釈するんだ?
■ このスレッドは過去ログ倉庫に格納されています