[過去ログ] + JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
23(4): (ワッチョイ 17c9-wh/5) 2016/09/01(木)18:09 ID:yAfRysov0(1/3) AAS
promiseのチェーンをn個動的につなげたいときはどうしたらいいの?
24(9): (ワッチョイ 17c9-wh/5) 2016/09/01(木)18:17 ID:yAfRysov0(2/3) AAS
a().then(b).then(c).then(d);
これをこう書き
function run(a){
return a[0]().then(a[1]).then(a[2]).then(a[3]);
}
a[] を4個固定じゃなくてn個にしたい
25(1): (オッペケ Sr8f-RETc) 2016/09/01(木)18:44 ID:P+2ORA+3r(1) AAS
>>24
Promise.all の事?
26(2): (ワッチョイ 17c9-wh/5) 2016/09/01(木)19:14 ID:yAfRysov0(3/3) AAS
>>25
allじゃない。 thenの方。
27(1): (ワッチョイ efce-wh/5) 2016/09/01(木)20:03 ID:EP8ZkXWM0(1) AAS
>>23-24
PromiseはECMAScriptの範囲なので
+ JavaScript(ECMAScript)質問用スレッド vol.122 + [無断転載禁止]©2ch.net
2chスレ:tech
こっちのほうがふさわしい。
28(3): ◆SEdFBOkLSw (アウアウ Sacf-RETc) 2016/09/01(木)21:56 ID:x5Fi8ahca(2/3) AAS
>>24
var f=function (a){
var y=a.shift();
if(y) y().then(function(){f(a)})
}
で全部いけるんでないの?
29: (アウアウ Sacf-vSVO) 2016/09/01(木)22:40 ID:ZxoQ7kpta(1) AAS
>>26
処理の連続性は保証されるはずだが、Promise.all では要件を満たせないのだな?
並列処理がNGなら下記URLを参考に
外部リンク:azu.github.io
30(2): (ワッチョイ f3ce-wh/5) 2016/09/01(木)22:41 ID:scPPFiSF0(1/3) AAS
>>26
こっちに答えがあったよ。
2chスレ:tech
31(2): (ワッチョイ eb5b-wh/5) 2016/09/01(木)22:59 ID:+SVnGf+J0(1/4) AAS
>>28
前から思ってるんだけど、何でお前らそんな奇妙なコードを書くの?
そういう可変長ループはwhileが鉄板で、>>24はそれを知らないだけだろ?
関数型()でインミュータブル()なら、shift使っちゃ駄目だと思うし。(俺は詳しくないが)
そのコード自体は自前Promiseとしてarrayを持ち、途中で挿入も出来るから、
そういった用途には面白いと思うよ。
ただ、普通は>>24に対してそれはない。
というか、お前らどこで習った?或いは誰を参考にしてそのコードを書いてる?
>>24
while使って書いてみ?
省3
32(1): ◆SEdFBOkLSw (アウアウ Sacf-RETc) 2016/09/01(木)23:19 ID:x5Fi8ahca(3/3) AAS
>>31
while使って書くって、プロミスなのに?
順序が保証できるのならそれで良いとは思うけど。
別に、shiftでも、carとcdrに相当するものでも良いよ。
どこも奇妙じゃないと思うけど。
33(1): (ワッチョイ eb5b-wh/5) 2016/09/01(木)23:29 ID:+SVnGf+J0(2/4) AAS
>>32
いや俺はPromise使ったことがないからその辺詳しくはないが、
>>24なら見た目普通に書けそうだが駄目なのか?
そもそも>>24が駄目(動かないコード)なのか?そうだったら済まんかった。
やはりcarとcdrか。
つかcar/cdrで抽象化している関数型みたいな奴って、一般的にarrayを破壊的に使うものなのか?
(lispなら最近の大富豪プログラミング以前だからそうなのかもしれんが、
多分最近の関数型なら嫌われるのでは?)
34(1): (ワッチョイ f3ce-wh/5) 2016/09/01(木)23:31 ID:scPPFiSF0(2/3) AAS
>>31
◆SEdFBOkLSw は技術レベル低いくせに
口ばっかりうるさいやつですから・・・
これまでも何度となく、意味不明なこと言ってるよw
35(1): (ワッチョイ eb5b-wh/5) 2016/09/01(木)23:46 ID:+SVnGf+J0(3/4) AAS
うーん、一応PromiseをMDNで確認してみたけど、書けると思うけどね。
見た目、functionで入れ子になるのが嫌で、タマネギ型オブジェクトにしてみただけだろ?
まあ、俺は使ったことがないから、壮絶な勘違いをしているかもしれんが。
ちなみに>>30は「タマネギ型」であることを説明しているわけだが、
それは>>24見る限り本人は分かってると思うんだよ。
そうではなくて、「n個にしたい」って言ってるんだから、そこを答えないと意味無いだろ。
なんつーか、Promise知ってる俺カッケーな答えでしかないんだよ。>>30は。
36: (ワッチョイ f3ce-wh/5) 2016/09/01(木)23:52 ID:scPPFiSF0(3/3) AAS
n個にしたいなら、i < 10 の代わりに
i < n にすればいいだけじゃんw
37: (ワッチョイ eb5b-wh/5) 2016/09/01(木)23:57 ID:+SVnGf+J0(4/4) AAS
だからそこを説明しろってこと。Promiseの説明全くいらんよね。
というか、これを書けないレベルの人がPromiseの使用を強制されられるところが
若干JavaScriptは歪んでる。まあこれも前から思っていることだが。
38: (ワッチョイ f3ce-wh/5) 2016/09/02(金)00:00 ID:gFIXdWf60(1/3) AAS
>>24本人、そしてそれ以外の人は、これでわかってるよw
2chスレ:tech
お前だけが分かってない。
39(1): ◆SEdFBOkLSw (アウアウ Sacf-RETc) 2016/09/02(金)00:26 ID:nUqjDcPOa(1/2) AAS
>>33
まぁ、破壊されたものを次に渡してるし、参照型で渡ってるから気持ち悪いだけで、破壊せずに渡してもいいと思うよ。
多分嫌われるw
>>34
本質理解してないお前よりマシだけどな。
なんだあのセンス無いやつ。
>>35
thenの中はコールバック関数で遅延評価だから、whileだと終わったかどうかわかんないと思うけど、どんなソース想定してる?
40(1): (ワッチョイ eb5b-wh/5) 2016/09/02(金)00:40 ID:oKN/Shh+0(1/4) AAS
>>39
いやPromiseで書くのはあくまで処理の事前予約だよな?
そこは変更不能だし、同期的に確定する。
もちろん中身の関数は実際には後に呼ばれるけど、
一般的にそれを「遅延評価」とは表現しない。
俺の想定しているコードなら、>>30をwhileに変えただけに近い。
とりあえず君の言い分が正しいのなら、>>30は間違いだということになるが、そうか?
41(5): ◆SEdFBOkLSw (アウアウ Sacf-RETc) 2016/09/02(金)01:01 ID:nUqjDcPOa(2/2) AAS
>>40
あー、そういう事か。いや、間違ってない。面目ないな。
入れ替えると言うか、それごと変えるという事か。
それは再帰とどっちが良いのかは目的次第かもしれん。
俺は残り回数渡して再帰すると思うわ。setTimeoutで包んで。
42: (ワッチョイ eb5b-wh/5) 2016/09/02(金)01:23 ID:oKN/Shh+0(2/4) AAS
>>41
>>23が「動的に」って言っているからそこは微妙なのだけど、
まあ初心者にそこまで厳密に言っても仕方ないからね。
多分あの質問なら単純に「可変長ループ」が分からないのだと思った。
それはさておき、>>28のコードは面白いとは思うが、
>>28を読める奴がこの質問はないだろってこと。
Promiseなら突っ込んだ時点でそこまでの処理は確定だが、
>>28なら途中の関数内で処理を変更出来る。
これを「動的に」と表現するのは自然ではあるが、
これを記述しようとする奴が>>24の質問はない。(と見た)
上下前次1-新書関写板覧索設栞歴
あと 960 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s