トップページ⇒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/
0458デフォルトの名無しさん2016/09/23(金) 23:51:52.39ID:2jAc0sAD
JSON.stringify({a:1, b:2}); とか、普通にやるだろ
JSONを全部手書きしたらプロパティ名をクォートで括らなければならんし、面倒くさい
簡単なJSONの書き換えなら手入力するかもしれんが
0459デフォルトの名無しさん2016/09/24(土) 00:04:59.40ID:y4/Y2YH6
お前、設定項目が数個のプログラムしか作った事ないのか? w
そんでもってa:1をa:2に書き換えたら、その都度そのプログラム実行するのか? 大爆笑
0460デフォルトの名無しさん2016/09/24(土) 00:11:43.60ID:8/0tEXHb
>>459
おまえは読解力が足りないアホなのか
数個だろうが何個あろうが、複数あるからシリアライズする価値がある
簡単な書き換えなら手入力するといってるだろ
0461デフォルトの名無しさん2016/09/24(土) 00:18:30.72ID:y4/Y2YH6
お前はアホなのか?情報は一元管理が鉄則

これに反すると
"a":1を"a":2に書き換えてa:1をa:2に書き換えるハメになる
バカしかやらんわ
0462デフォルトの名無しさん2016/09/24(土) 02:14:00.16ID:bcRI8Hfy
>>459
プログラムを実行も何も、ワンライナーじゃえの
var j=JSON.parse(fs.readFileSync(...));j.hoge=aaa;fs.writeFileSync(JSON.stringify..
0463デフォルトの名無しさん2016/09/24(土) 06:05:18.86ID:54HKSWWZ
promptでダイアログボックスを表示して、キャンセルを押すとNaNが返ってきます。
ダイアログボックスのキャンセルはNullが返ってくるとあったのですが、何がいけないのでしょうか?
見入力でOKを押した場合と、キャンセルを押した場合とで違う処理をしたいと思っています。
0464デフォルトの名無しさん2016/09/24(土) 08:35:07.11ID:8/0tEXHb
>>461
>>462藻指摘してるが、JSON.parseしてからJSON.stringifyするだけだろ
2箇所を同時に書き換えなければならない、なんて思ってるのはお前だけ
0465デフォルトの名無しさん2016/09/24(土) 09:16:15.32ID:y4/Y2YH6
>>464
後出し大将現る
> JSON.stringify({a:1, b:2}); とか
0466デフォルトの名無しさん2016/09/24(土) 10:00:58.09ID:T2jfomp1
>>463
知らんけどブラウザ依存じゃない?
ttps://jsbin.com/tamofawite/edit?js,output
Chromeだと false だった
0467デフォルトの名無しさん2016/09/24(土) 12:47:39.74ID:NUokNM1t
>>465
元々はJSONを入力する時の話だったからJSON.stringifyを紹介した
お前さんが「JSONとオブジェクト初期化子の2箇所を同時に書き換えるのか」とアホな事をいってJSON読み込みの必要が出てきたからJSON.parseを紹介した
お前さんが何の設定する事を想定していてどのように編集しているのか、俺は知らん
俺から見れば情報を曖昧に出して後出ししたのはお前の方
0468デフォルトの名無しさん2016/09/24(土) 12:51:25.63ID:NUokNM1t
後な
JSONの設定編集は当初の>>421の質問からは大きく話題がずれてる
JSONの設定に合わせてJavaScriptコードの入力スタイルを決める必然性はまるでない
君はそうなんだろうが、別の言語同士でクォートの記述を合わせる必要はないからな

GoogleのJavaScript Style Guideに合わせてシングルクォートを使う人もいるだろう
見た目を気にしてシングルクォートを使う人もいるだろう
HTMLで見慣れているダブルクォートを使う人がいるかもしれない
最終的には自分なりの好みや優先順位で決まるもので他人の考えを否定出来るほどの論理は基本的にない
0469デフォルトの名無しさん2016/09/24(土) 12:58:58.18ID:YdAnVmLb
勝手に整合性を自己定義している時点で間違い
0470デフォルトの名無しさん2016/09/24(土) 13:04:04.59ID:y4/Y2YH6
後出し大将あらため言い訳番長
【設定ファイル】って知らないらしい
0471デフォルトの名無しさん2016/09/24(土) 13:56:12.12ID:e4J3FKju
>>470
何の設定ファイル?
JavaScriptには設定ファイルなんてないぞ。
0472デフォルトの名無しさん2016/09/24(土) 14:33:05.17ID:y4/Y2YH6
おバカですねえ、揚げ足取りにすらなってない
0473デフォルトの名無しさん2016/09/24(土) 15:28:20.96ID:e4J3FKju
揚げ足取りではなくて、質問なんだが?

質問なのに揚げ足取りに鳴るわけ無いだろw
それで、何の設定ファイル?
0474デフォルトの名無しさん2016/09/24(土) 17:56:14.37ID:y4/Y2YH6
そんじゃ、質問で返してやるよ

キミが知ってる【設定ファイル】を読み込むプログラムを記述してる言語を答えよ。そしてその記述言語の設定ファイルの有無も答えよ。

これに回答できたら教えてあげる
0475デフォルトの名無しさん2016/09/24(土) 18:01:32.86ID:fVgLvkCD
こっちにも貼っとくか…
http://i.imgur.com/u6Rc0Au.jpg
自分がレスを返してる相手がレスを返す価値のある相手かよく考えろよ
0476デフォルトの名無しさん2016/09/24(土) 18:32:49.67ID:fP/MPmfi
AutopagerizeのSITEINFOはJSONだな
http://wedata.net/databases/autopagerize/items
0477デフォルトの名無しさん2016/09/24(土) 20:38:30.75ID:6IMs83+U
>>474
C言語。そしてC言語に設定ファイルなんてものはない。
0478デフォルトの名無しさん2016/09/24(土) 20:43:52.34ID:y4/Y2YH6
>>477
じゃ、教えてあげよう
atom
0479デフォルトの名無しさん2016/09/24(土) 21:27:12.07ID:6IMs83+U
>>478
atomはテキストエディタ
0480デフォルトの名無しさん2016/09/24(土) 21:37:31.21ID:y4/Y2YH6
>>479
そうだよ。javascriptの設定ファイルなんて誰も言ってないのに
どっかのバカがこんな(>>471)マヌケな事言い出したから。ハア? だよ

>>471
>>>470
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
0481デフォルトの名無しさん2016/09/24(土) 22:28:02.67ID:/TWDHHcN
xjsonとか云うの出すらしいから
手書きも増えるし、要求されるかもしれない。
0482デフォルトの名無しさん2016/09/24(土) 23:10:20.02ID:6IMs83+U
>>480
意味がわからん。
atomの設定ファイルをJSONで書くからって
C言語などでJSONに合わせてコード書く必要ないだろ。
0483デフォルトの名無しさん2016/09/24(土) 23:39:01.41ID:y4/Y2YH6
>>482
それはキミがバカだからわからないんだよ
JSONで記述された設定ファイルの話をしていたら、どっかのバカが
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
と、絡んできただけ
0484デフォルトの名無しさん2016/09/25(日) 00:39:56.37ID:0J+83ZC2
>>483
だからJSONで記述された設定ファイルの話を

JavaScriptのスレでする意味ないだろって話なんだが?
0485デフォルトの名無しさん2016/09/25(日) 05:34:54.46ID:y4/VuarS
もういいよ
皆>>483が正しいって分かってるから
>>484は放っておこう
0486デフォルトの名無しさん2016/09/25(日) 07:44:51.98ID:qiD59u34
そうでないかと危ぶんでいたが、やはり、Atomだったか
Atomの設定ファイルをテキストエディタで編集するのはcsonだと思うが、jsonを編集する事なんてあるのか?
改行もインデントもされてないjsonファイルを直接編集するのはいかれてるとしか思えないんだが

> 皆>>483が正しいって分かってるから
本人しか同意してないように読めるけどな
0487デフォルトの名無しさん2016/09/25(日) 08:41:36.29ID:hrPU7kVw
>>463 >>466
jQuery UI のダイアログでも使えば?

OK, Cancelの2つのボタンしか無いなら、

if(OK){ }
else { }
でいいだろ

戻り値が、NaN というのは、数値変換エラーだから、プログラムにバグがある

>>486
圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
0488デフォルトの名無しさん2016/09/25(日) 09:50:51.04ID:KU3wtz+G
>>484
>だからJSONで記述された設定ファイルの話を
>JavaScriptのスレでする意味ないだろって話なんだが?
足りない頭で必死に考えたんだろうが、バカ過ぎる

あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
その際の注意点は…
全然問題ない
0489デフォルトの名無しさん2016/09/25(日) 10:03:00.83ID:NgaD/H31
そうだよな、設定ファイルがJSON形式というだけ
0490デフォルトの名無しさん2016/09/25(日) 10:13:15.83ID:qiD59u34
>>487
いや、「config.csonを編集することはあってもapplication.jsonを編集することはないんじゃない?」って事
テキストエディタの設定ファイルをテキストエディタで編集するなら、コメントやインデントをつけたくなるし、俺はAtomでJSONファイルを編集したことがない

> 圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
そういうツールがあるのは知ってる
JSONを整形するなら内部的にJSON.parseと同等機能を使っているはずだが、彼(>>465)はなぜか否定的というか馬鹿にしている感があるし、主張がちぐはぐすぎるんだよな…
0491デフォルトの名無しさん2016/09/25(日) 10:27:53.21ID:qiD59u34
そもそも、JSONはテキストエディタで直接編集することを踏まえていない感がある
インデントはできるが、コメントは使えない時点でテキストエディタで編集する気が起きない(Atomで膨大な設定用プロパティを全て覚えるのは無理)
どうしても必要な状況があれば「JSON エディタ」的な何かを使うだろうな

実際には>>476のように設定用UIを別に作っているケースが多いと思う
Atomはユーザが直接編集するものはCSONかCoffeeScriptを使い、プログラム側で生成するものはJSONを使っている
0492デフォルトの名無しさん2016/09/25(日) 12:11:22.44ID:qud+/4QR
うーん。設定用UIねえ
ゲームエンジン作ったときの話だけど
ユーザー側の設定用UIはボチボチ作るというかJSONにしないけど
そのエンジンの設定ファイルを書き出すためのツール作らないでしょ
バージョンアップの度にUI弄って書き出すのか?と言うことになるし
intファイルと同じく手編集もするものだと思うよ
で、コーディングと一緒に書いていくから、クォーテーションの整合性を気にするのも自然
0493デフォルトの名無しさん2016/09/25(日) 12:22:42.62ID:iekzKwrb
JSONがテキストエディタで編集するのに向かないって話じゃないの?
CSVをテキストエディタで編集しないのと同じ
0494デフォルトの名無しさん2016/09/25(日) 12:24:56.98ID:iekzKwrb
>>492
iniはコメントを許す仕様じゃなかったっけ
テキストエディタで編集する前提ならその設定行の意味するところをコメントで書くべきだと思うな
0495デフォルトの名無しさん2016/09/25(日) 13:28:03.63ID:0J+83ZC2
>>488
> あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、

別にJavaScriptだからってJSONを使う理由はないし
RubyだってJSONを使うことだってある。

っていうか、その理屈だとYAMLはいつ使うんだよ?w
YAMLみたいな言語はないぞ。
0496デフォルトの名無しさん2016/09/25(日) 13:32:12.13ID:0J+83ZC2
Atomの例でわかるように、JSONが" " でくくられているからって、
JavaScriptのコードは "" で括る必要はないね。
0497デフォルトの名無しさん2016/09/25(日) 13:33:11.00ID:V/4I7o9u
>>495
YAMLみたいな言語、がようわからんね。
Yaml ain't markup language
なんだから、言語ではないよ。
0498デフォルトの名無しさん2016/09/25(日) 13:33:55.60ID:0J+83ZC2
>>497
だから設定ファイルの流儀をソースコードに持ち込むなって話だよ。
atomの例で分かったろw
0499デフォルトの名無しさん2016/09/25(日) 13:53:31.79ID:V/4I7o9u
>>498
そりゃ変だよ。
パースできるものとソースの書式が同じでなんの問題も無いし、
存在意義とか目的によって、サブセットになるのは至極当然な気がするが。
0500デフォルトの名無しさん2016/09/25(日) 13:56:15.35ID:6/nEO/uB
evalでパースすれば関数もパース出来るし、式も使える
コメントもあるし、""をキーに使わなくていいし、''を使う事も出来る
0501デフォルトの名無しさん2016/09/25(日) 14:39:36.71ID:0J+83ZC2
>>499
話がずれてる。同じだと問題があるなんて一言も言ってない。

同じにする必要はない。設定ファイルのことなんか忘れて
JavaScriptのやり方として良い方を選べって言ってる。

その例としてAtomを出したんだが?わからなかった?
Atomは設定ファイルにJSONを使っているが、
JSONが""だからって、ソースコードは""にする必要はない。
0502デフォルトの名無しさん2016/09/25(日) 14:41:15.30ID:0J+83ZC2
>>500
それはJSONの仕様を満たしていないから
JSONではない。
0503デフォルトの名無しさん2016/09/25(日) 14:54:10.10ID:hrPU7kVw
>>491
JSONでは、JSのコメントが使えないの?
それならダメだわ

Ruby, Groovy みたいに、言語そのものが、
設定ファイルとしても読める、DSL風の言語が優れている
0504デフォルトの名無しさん2016/09/25(日) 15:05:45.98ID:0J+83ZC2
>>503
お前「言語そのものが設定ファイル」の意味分かってないだろ。
言語そのものを設定ファイルとして読むっていうのならどの言語でも可能だよw

コンパイルしないと実行できない言語の場合は
コンパイラを内蔵する必要があるだろうけど。
0505デフォルトの名無しさん2016/09/25(日) 15:36:47.03ID:y4/VuarS
>>501
「必要はない」じゃないんだよ
「ない」という答えを出すのは簡単
元の質問に、「そんなのどっちでも関係ない、そんなこと聞くな」というのは簡単
でもそれじゃつまらないから、しいて言えばの理由をひねり出してるんでしょ
その前提分かってそういうこと言ってる??
しいて言えばそういうこと気にする人もいるということを言ってるの
別に一般的に気にする必要があるとは誰も言っていない
0506デフォルトの名無しさん2016/09/25(日) 15:38:42.41ID:0J+83ZC2
はぁ?

じゃあGoogleのコーディングスタイルに合わせて
'' を使うべきだっていうのが正確だよw
0507デフォルトの名無しさん2016/09/25(日) 15:39:13.51ID:0J+83ZC2
あ、見にくかったな。
' ' (シングルクォート)でくくるべきだっていうのが正解だよ。
0508デフォルトの名無しさん2016/09/25(日) 15:51:35.05ID:0J+83ZC2
どっちが良いのかは、実際にどちらが多く使われてるかで決めたほうが良いよ。

http://sideeffect.kr/popularconvention#javascript

理由がある場合は必然的に多く使われるし
理由がなくとも一般的なJavaScriptの書き方として統一しておいたほうが良い。

あともちろんJavaScriptとしての話なので、
ここで他の言語のルールを参考にする必要はまったくないw
0509デフォルトの名無しさん2016/09/25(日) 15:59:27.55ID:0J+83ZC2
数もそんなにないし転記しようかね? (俺のスタイルと完全に一致してるw)

・最後にカンマ vs 最初にカンマ → 最後にカンマ
○ var obj = {
foo: 1,
bar: 2,
× var obj = {
foo: 1
, bar: 2

・スペース vs タブ → スペース

・関数名の後にスペースを入れる vs いれない → 入れない
○ function foo() {
× function foo () {

・引数の前後にスペースをいれる vs いれない → 入れない
○ function fn(arg1, arg2) {
○ if (true) {
× function fn( arg1, arg2 ) {
× if ( true ) {

・オブジェクト定義の:の前後にスペースを入れる → 値の前のみに入れる
○ foo: 1,
× foo:1,
× foo : 1,

・条件文のキーワードの後にスペースを入れる → 入れる
○ if (true) {
× if(true) {

・シングルクォート vs ダブルクォート → シングルクォート
0510デフォルトの名無しさん2016/09/25(日) 16:00:55.47ID:rgw8PMte
前から疑問なんだが
JSONはなぜ大文字なの?
0511デフォルトの名無しさん2016/09/25(日) 17:02:28.76ID:+OU/FywJ
>>510
JavaScript Object Notationの略であり、英語ではこの様に単語の頭文字を抜き出した略語を他の語と区別するために大文字で表記する慣習があるから
0512デフォルトの名無しさん2016/09/25(日) 17:17:23.26ID:0J+83ZC2
つーかatomの例を出したんだから
そこから理解しろよw

JSONとJavaScriptは別物なんだから
JSONがダブルクォートだからって、
ソースコードまでJSONに合わせる必要ねーだろ。

文字列をくくるのはシングルクォートだし、
オブジェクトのキーであればそもそもクォートでくくらない。
0513デフォルトの名無しさん2016/09/25(日) 17:20:48.99ID:iekzKwrb
>>503
JSONではコメントを使えないのでAtomではテキストエディタで編集する前提のファイルにはCSONを使っている
上でJSON云々で暴れている人はJSONをまるで理解してしないと思われる
0514デフォルトの名無しさん2016/09/25(日) 18:25:59.06ID:afVL0VXc
どっかでみた感じのテンションの上がり方だな。

尻カンマではなく頭改行カンマ派だと言うことはおいといて、
なぜその言語のサブセットか自体であるべきではないと言い切っちゃうんだろう。

最悪、パーサが無くても解釈出来るようにだと思うんだが。
0515デフォルトの名無しさん2016/09/25(日) 18:34:17.91ID:KU3wtz+G
>>513
頭悪いな
じゃpackage.jsonでも、なんでもいいぞ
atomを使ってないのは正解だ
0516デフォルトの名無しさん2016/09/25(日) 20:12:32.35ID:0J+83ZC2
知らないかもしれないが、package.jsonっていうのはnpmの話だ。
ソースコードをみれば、何が言いたいのかわかるだろう。
https://github.com/npm/npm/blob/master/lib/completion.js

JSONの流儀に合わせるやつなんていない。
0517デフォルトの名無しさん2016/09/25(日) 22:29:45.99ID:Pt+ww3lU
package.jsonをテキストエディタで書く人がいるとは…
彼は反論する度にボロが出てくるな
0518デフォルトの名無しさん2016/09/26(月) 00:08:05.47ID:fnqveAbt
奴隷のように決められたパターンでしか使わないなら、手書きしないでも済むだろうね
0519デフォルトの名無しさん2016/09/26(月) 00:15:10.40ID:juGwjv/D
>>518
奴隷のようにって必要なくね?w

package.jsonは決められたパターンでしか
使わなくて済むようになってる。
だから手書きする必要もない。

OK?
0520デフォルトの名無しさん2016/09/26(月) 00:17:22.71ID:fnqveAbt
それは奴隷のキミだけ
0521デフォルトの名無しさん2016/09/26(月) 00:23:18.72ID:vYe4FNCy
奴隷のように決められたフォーマット(JSON)でしか書かない人は誰だろうね
0522デフォルトの名無しさん2016/09/26(月) 00:32:59.19ID:juGwjv/D
なんかまだ気づいてないみたいだけど、npmの
ソースコードはダブルクォートじゃなくて
シングルクォートを使ってるんだよ。

そしてオブジェクトのキーはダブルクォートでくくらない。
これがJavaScriptの標準的なコーディングスタイルなんだよね。

JSON? 関係ない話だね。
0523デフォルトの名無しさん2016/09/26(月) 05:04:27.74ID:ta1cG+2z
そのコーディングスタイルでは関係ない、無視しているというだけで
気になる人も居るだろうということを否定することはできない
0524デフォルトの名無しさん2016/09/26(月) 18:00:26.14ID:BmhEYJ2V
ang2で2つの要素をforするにはどうすればいいですか?
定義リストをforで回したいです
0525デフォルトの名無しさん2016/09/26(月) 22:08:18.59ID:vSvkRnqZ
>>524
ang2とは?
状況は詳しく具体的に
0526デフォルトの名無しさん2016/09/26(月) 22:38:26.95ID:juGwjv/D
ang2っていったらAngular2のことに決まってるだろ
0527デフォルトの名無しさん2016/09/26(月) 22:44:16.17ID:xBbiKNTT
配列の要素を順番に、かつ非同期に処理するにはどうすりゃいいの?

[a,b,c].forEach((x)=>{
//?
});

コメントの部分にawait書いても当然エラー
(x)=>{の前にasync書いても並列で処理されるだけ
aを使った非同期処理が完了したらbを使った非同期処理を開始したい
なおforや再帰は使わないものとする
0528デフォルトの名無しさん2016/09/26(月) 23:41:32.26ID:juGwjv/D
>>527
あんたが言ってる「非同期」の正確な意味は?

JavaScriptはシングルスレッドだから並列に処理することは出来ない。
昔も今もそれは同じ。

スレッドを使うにはJavaScript外の機能を使うしかない。
つまりはブラウザではDOM APIの内部で使われてるスレッドを間接的に使うか
もう少し明確にスレッドを使っていることを明言しているWebWorkersを使うということ。

Promise(await/async)を使うだけならばシングルスレッドでもできる。
どういう意味で「非同期」と言っているか、本当にやりたいことは何かを言ってくれ。
0529デフォルトの名無しさん2016/09/26(月) 23:55:09.05ID:xBbiKNTT
>>528
たとえば以下で'a'を表示したら1秒待って'b'を表示させる(以下'c'も同様)にはどうすればいい?
forや再帰は無しで

['a','b','c'].forEach((x)=>{
new Promise(resolve=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});

setTimeoutはapiだからスレチ?
0530デフォルトの名無しさん2016/09/27(火) 00:26:52.16ID:2eVdEzmX
>>527だけど上のほうに書いてあったreduceでthenを繋げる方法で解決しました
0531デフォルトの名無しさん2016/09/27(火) 09:19:03.59ID:lbwP9zfe
自分でeachAとか作って
await ['a','b','c'].eachA( async関数 )
のように書けるようにする必要がある

折角のasync関数なのにPromiseをこねくり回す位なら
for文使ったほうが絶対に良い
0532デフォルトの名無しさん2016/09/27(火) 09:33:31.51ID:Bz+GHRpv
>>531
だよな、基礎知識の欠落
0533デフォルトの名無しさん2016/09/27(火) 10:20:45.69ID:4v6Nawqj
>>528
言ってることがめちゃくちゃですがな。
並列・平行、同期・非同期についてもっと調べてからものを言ってくれ。
0534デフォルトの名無しさん2016/09/27(火) 10:49:37.22ID:5SWTtAlN
ループ中にsetTimeoutという概念が理解できないわ
0535デフォルトの名無しさん2016/09/27(火) 11:02:56.83ID:+FylPIiv
>>534
Watch dogタイマー知っている?
あれなんか、簡単な例だと思うよ。
0536デフォルトの名無しさん2016/09/27(火) 12:31:43.94ID:r4YBGm4y
>>535
>>530の解決を見ると例にもならないな
0537デフォルトの名無しさん2016/09/27(火) 12:41:12.30ID:+FylPIiv
>>536
? 配列要素処理のお話の事なの??
前からお話していた、非同期処理の周期タイマー利用のお話だと思ったけど。

配列要素処理なんだから、mapやreduce使えば済むんだもんね。
タイマーなんか関係ないわ。
0538デフォルトの名無しさん2016/09/27(火) 12:49:21.75ID:BPXrtVfk
>>534
JSはシングルスレッドだから、イベントを非同期に見せかける。
イベントキューにイベントを投入して、その処理を待たずに、関数が先にリターンする

同期処理なら、インターネットとの通信など、
そのイベントが終了するまで、関数がリターンされない。
処理終了まで待つから、そこで処理が止まる

ちなみに、setTimeoutに、0を指定しても、イベントキューからイベントを取り出すのは、
次のサイクルになるので、最低でも、4msかかる

また非同期では、try-catch は使えないので、
昔ながらの戻り値で、エラーかどうかを判断する

つまり、イベントキューにイベントを投入するだけなので、
処理がそこで止まっていないので、すぐ次の処理へ進んでいくから

そしてどこかのタイミングで、イベントのコールバック関数が呼ばれるから、
どちらが先に呼ばれるか、タイミングが予測できないから、
よくバグるし、再現性がないので、非常に困る
0539デフォルトの名無しさん2016/09/27(火) 13:25:00.83ID:QIjlBim5
>>529
setTimeoutはまあ非同期処理のダミーだとして回答すると、Promiseをプレースホルダーとしてthenでチェーンをつないでいけばいいので以下の様になる。

var promise=Promise.resolve();
['a','b','c'].forEach((x)=>{
promise=promise.then(()=>{
new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
});
0540デフォルトの名無しさん2016/09/27(火) 20:48:56.77ID:pg5DZ73n
>>533
質問者とは意思疎通できたから
君とは話さなくていいかなって思ってるよw
0541デフォルトの名無しさん2016/09/28(水) 08:12:30.32ID:zSRNZ6Ju
何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
そりゃ単に、語弊があったり正しいとは限らない言い方をしている事に自分が気づいてないのに加えて、飛んでくるマサカリ避けて終わりな、
とても低レベルな偽技術者ですってドヤ顔されてる気分。
0542デフォルトの名無しさん2016/09/28(水) 12:21:35.90ID:3RTmt4Yz
すみませんdwrについての質問はここでよろしいのでしょうか
0543デフォルトの名無しさん2016/09/28(水) 12:49:31.69ID:RDlboUCA
Access-Control-Allow-Origin: *
の設定をサーバーでしているのに、クロスドメイン制約でアクセス出来ません
chromeです
networkタブを見たら、アクセス自体が行われていないので、ヘッダの確認も出来ていないはずです
0544デフォルトの名無しさん2016/09/28(水) 21:34:41.98ID:NVy1RbGE
>>541
> 何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。

何を言ってるんだ?
今回意思疎通をしたいのは質問者であってお前じゃない。

知識がない人と意思疎通をするんじゃなくて
質問者と意思疎通をするのが目的。

そもそも俺は質問者が知識がないとはは思わないし、
お前、失礼なやつだな。失礼なだけのやつだな。
0545デフォルトの名無しさん2016/09/28(水) 22:27:51.60ID:EXLHhJLL
>>544
「何かを理解したい」と「何かの知識が無い」は=じゃなくて、「または」だよ。

失礼と言うなら、「俺が『何かを理解したい人間は何かの知識が無い人間だ』と誤解しているに違いない」と言う発想自体が失礼だと思うけど。

お前がやってんのは、Excelの使い方が分からん人の「A列で3番目に大きい数字が欲しいんだけどどんな関数ある?」って質問に、嬉々としてIFとかRANKの使い方説明してるようなもの。
パソコンの大先生以外の何なのかわからんレベル。

何で?→それ以上の数字を更に検索したいんだよ→めんどくさいし使い捨てならA列コピって並べ替えちゃえば良いじゃん
があって然るべき。
0546デフォルトの名無しさん2016/09/29(木) 02:37:58.14ID:kaW1Iqgz
それは間違ってるよ
ここは似非回答者が知識をひけらかす場所だからね
けして人助けするスレではない
そこんとこ勘違いしないように!
0547デフォルトの名無しさん2016/09/29(木) 18:44:44.84ID:KUMvFnA4
>>546
babel君のオナニースレだからねえ。
0548デフォルトの名無しさん2016/10/04(火) 11:14:52.40ID:R4xZGg72
オブジェクトをjson化した文字列がサーバーサイドにあり、
それをクライアントのJSに渡してオブジェクトに復元したいのです。
JSON文字列のままJSに渡してJSでJSON.parse()する方法と、
サーバーサイドでDeserializeしてオブジェクトを復元して、
それをJSに渡すのと
どっちが普通ですか?文字列の大きさは数メガバイトくらいです。
0549デフォルトの名無しさん2016/10/04(火) 12:19:52.18ID:Vg4EUv8s
>>548
JSでJSON.parse()が普通
通信路は負荷が無いならなるべくテキストでな
0550デフォルトの名無しさん2016/10/04(火) 18:21:44.79ID:RzipCig6
<input type="button" name="aaa" value="クリック" onClick="Disp_on_off('disp');">

<TABLE border="1">
<TR>
<TD>1行目:</TD><TD>aaaaaa</TD>
</TR>
<TR id="disp">
<TD>2行目:</TD><TD>nnnnnn</TD>
</TR>
</TABLE>
0551デフォルトの名無しさん2016/10/04(火) 18:22:25.04ID:RzipCig6
function Disp_on_off(id){

var disp_zyoutai = document.getElementById(id).style.display;

if(disp_zyoutai=="none"){disp_zyoutai = "block";}
else{disp_zyoutai = "none";}

document.getElementById(id).style.display = disp_zyoutai;

}
テーブルの2行目をクリックボタンを押すたびに表示非表示にしたいんですが
クリックを2回押して2行目を表示させるとテーブルが崩れてしまいます
テーブルが崩れないようにするにはどうしたらいいんですか?
0552デフォルトの名無しさん2016/10/04(火) 19:59:17.28ID:oFIFwTqQ
>>551
if(disp_zyoutai=="none"){disp_zyoutai = "table-row";}
0553デフォルトの名無しさん2016/10/04(火) 21:56:34.90ID:px5zXLds
>>551
function Disp_on_off(id) {
 var style = document.getElementById(id).style;
 style.display = (style.display === "none") ? "table-row" : "none";
}
0554デフォルトの名無しさん2016/10/04(火) 21:56:43.31ID:RzipCig6
>>552
ありがとう^^

それではcssでdisplay:none;したものをjavascriptでdisplay="block";
しようとしても表示されませんcssでnoneしたら表示は無理なんでしょうか?
0555デフォルトの名無しさん2016/10/04(火) 22:00:08.07ID:px5zXLds
function Disp_on_off(id) {
 var style = document.getElementById(id).style;
 style.display = {none: "table-row"}[style.display] || "none";
}
0556デフォルトの名無しさん2016/10/04(火) 22:01:54.54ID:px5zXLds
>>554
CSSを使って表示の制御をするのはいいやり方だ。
CSSを使って表示の制御をするなら、CSSを使って切り替えれば良いのだ
0557デフォルトの名無しさん2016/10/04(火) 22:10:22.18ID:px5zXLds
<input type="button"value="クリック" onclick="toggleDisp('disp')">

<table>
<tr><td>1行目:</td><td>aaaaaa</td></tr>
<tr id="disp"><td>2行目:</td><td>nnnnnn</td></tr>
</table>

table { border-collapse: separate }
table, td { border: 1px solid #000 }
#disp { display: none }
#disp.visible { display: table-row }

function toggleDisp(id) {
 document.getElementById(id).classList.toggle("visible");
}
0558デフォルトの名無しさん2016/10/05(水) 02:32:23.82ID:ei6gN13W
>>549
レスありがとうございました。
>JSでJSON.parse()が普通
そうですか。知らなかったです。
>通信路は負荷が無いならなるべくテキストでな
ちなみに、テキスト以外でデータを送ると問題が出る場合がありますか?
■ このスレッドは過去ログ倉庫に格納されています