【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/04/11(月) 16:28:34.52ID:ORuOCkHy
pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。

node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
io.js - node.js 互換で Joyent の影響からの脱却を目指す処理系
http://iojs.org/
Rhino - JVM上で実行できる処理系
https://developer.mozilla.org/ja/Rhino

io.js の経緯
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
javascriptはrubyと比較してもかなり速い
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&;lang=v8&lang2=yarv
基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
http://gihyo.jp/dev/serial/01/realtimeweb/0002

前スレ
【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
http://echo.2ch.net/test/read.cgi/tech/1419673207/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
2017/02/23(木) 10:50:09.51ID:5OVH7aZj
ただ、
> 各アプリの設定ファイルを、わざわざAnsibleのyml形式で
> 書き直すっていうのがアホらしいと思う
は書くのは大変だけど、多大なメリットがある

それは、デプロイするパッケージのバージョンを上げるときに、付属する設定ファイルが
結構変わったり、パッケージそのものが変わっても、設定をyamlで書いとけば変更なし
(あるいはちょっとした変更)でいけたりする
iptablesからfirewalldの変更とかね

設定アイル事前準備→内容書き換え→配布だと、それに対応できない場合がある
2017/02/23(木) 22:10:27.88ID:Ka1UMSVA
> それは、デプロイするパッケージのバージョンを上げるときに、付属する設定ファイルが
> 結構変わったり、パッケージそのものが変わっても、設定をyamlで書いとけば変更なし
> (あるいはちょっとした変更)でいけたりする

それは普通にアプリ標準の設定形式であっても同じ

もし、付属する設定ファイルが結構変わっていたりしたら
それにAnsibleが対応するまで、使えない。

実際、エラーが出て困ってる。
2017/02/23(木) 22:11:49.00ID:Ka1UMSVA
>>360
> 書き直すっていうのがアホらしいと思う
うん、アホらしいね

だから、設定ファイル(ふつーのテキストファイル)に変数を埋め込む機能が準備されてるんだね

そして、アホらしいから設定ファイルに変数を埋め込む方法を使えば
設定ファイルが大きく変わったとき困るよね?
2017/02/23(木) 22:17:25.43ID:Ka1UMSVA
>>361
> iptablesからfirewalldの変更とかね

iptablesはこっちを使いましょう
https://docs.ansible.com/ansible/iptables_module.html

firewalldはこっちを使いましょう
http://docs.ansible.com/ansible/firewalld_module.html

見ての通り使える機能が違うからオプションも違います。


iptablesを勉強した後、Ansibleのドキュメントを見て、何が何に対応するか調べましょう
そして
firewalldを勉強した後、Ansibleのドキュメントを見て、何が何に対応するか調べましょう
2017/02/23(木) 22:38:29.44ID:OjaB8M7n
Ansible警察です^^
2017/02/24(金) 00:19:14.85ID:J1gh7NVQ
まだやってんのか もうそれでスレ立てろよw
2017/02/24(金) 07:54:29.50ID:8JeFvz/h
docker派の俺、高みの見物
自社サーバー中心だとその辺楽だなあ
2017/02/24(金) 10:50:57.89ID:L3urbmMZ
>>362
> もし、付属する設定ファイルが結構変わっていたりしたら
> それにAnsibleが対応するまで、使えない。
そんなことないよ。
設定ファイルが結構変わってても、設定する項目は変わらなかったりする。
locale関連設定とか、timezone設定とか。

>>363
> 設定ファイルが大きく変わったとき困るよね?
そうだよ。だからyamlで設定するメリットを書いた。

>>364
> 見ての通り使える機能が違うからオプションも違います。
だから、yamlで設定を書いておけば、少しの変更でいけるって書いたじゃん。
それに、この例で言えば、iptablesでもfirewalldでもいける設定を誰かが作ってるかもしれないし。
俺はそれ探すより自分で書き換えた方が速かったから探してないけど。

誰かが作ったカスタマイズ度が高い設定を使うだけなら、chefもansibleも似たようなもんかもね。
>>357のデメリットが大部分あてはまる。
2017/02/25(土) 00:07:14.99ID:7KoBIFTE
> だから、yamlで設定を書いておけば、少しの変更でいけるって書いたじゃん。

それは無理。公式がコードを修正しないといけない
2017/02/25(土) 00:51:19.65ID:KfcxLahl
どれも枯れてないものばかりだし変化に文句つけても仕方なかろう
2017/02/25(土) 01:26:59.68ID:JBoxI4/B
幻想に乗っかっちゃだめよ
2017/02/26(日) 18:16:36.24ID:vI+CT2Uu
すまん、ここnode.jsのスレだよな?
2017/02/26(日) 18:37:39.09ID:TIfPFmII
実際に手を動かしてるやつがいて安心したんだけどな
机上の空論語るよりよっぽどためになる
と言いつつ、dockerの俺は高みの見物
2017/03/17(金) 16:32:59.98ID:AoUhXhvS
ES6モジュールで書かれた依存モジュールがある状態だとbabel-node使えないな
node_modulesのignore外すとbabel自身を変換しようとするのかエラー出て通らない
globalにbabel-cli入れないとダメか
375デフォルトの名無しさん
垢版 |
2017/03/22(水) 22:15:57.31ID:ZzjrTTVd
electronで作ってるんだけどC#とかのWindow Form?と違ってcssデザインの才能ないと見た目が悪くなるなコレ
2017/03/23(木) 02:57:25.40ID:RevR4EA/
こういうのを参考にすれば?
monaca(PhoneGap/Cordova) + AngularJS + Onsen UI

サンプルアプリ & テンプレート
https://docs.monaca.io/ja/sampleapp/samples/

Onsen UIをカスタマイズするOnsen Theme Rollerの紹介
http://blog.asial.co.jp/1355
377デフォルトの名無しさん
垢版 |
2017/03/23(木) 23:51:44.74ID:kxaT0+ZA
>>376
これ便利ですね! ありがとうございますm(__)m
2017/03/27(月) 02:17:39.25ID:lADNPtGP
npmが壊れたみたいなのですが、これはどうすればよろしいのでしょうか。

経緯:
1. 本日初めてインストール。(v4.8.1-x86、なおvistaなのでv6.10.1は無理だった)
2. gulp等インストールが順調に完了
3. uglifyしようとするも、ES2015のためエラー
4. uglify#harmonyをインストールしようとするも、httpsでエラー
5. ローカルにクローンしてnpmしても、途中でhttpsでエラー
6. npm install npm@latest -g しようとするが、ディレクトリを間違えていたため途中でCtrl-Cで止める
7. これ以降npmが動かなくなる
8. 何度もnodeをアンインストール/再インストールしてみたが、npmが動かない。
9. エラーメッセージは以下。(ディレクトリ名は消してます)

>npm version npm
module.js:327
throw err;
^

Error: Cannot find module 'semver'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (npm\node_modules\npm\lib\utils\unsupported.js:2:14)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)

アンインストールしても直らないので、レジストリかどこかに書いてそうなのですが、
ご存じないでしょうか。
2017/03/27(月) 09:36:51.01ID:p7pVTGV7
vistaの場合はドッチなんだろう

ここも削除してみたら

Windows XP - %USERPROFILE%¥Application Data¥npm¥node_modules
Windows 7 - %AppData%¥npm¥node_modules
2017/03/27(月) 09:43:01.09ID:p7pVTGV7
と言うか最新版が入らない時点で終了な気がする。
ネット上の環境使ったほうが早くないかな
https://c9.io/
2017/03/27(月) 09:43:54.86ID:p7pVTGV7
>>375
つ bootstrap
2017/03/27(月) 10:58:39.97ID:lADNPtGP
>>379
ありがとうございます。復活しました。
ディレクトリは%USERPROFILE%\AppData\Roaming\npm\node_modulesでした。
2017/03/27(月) 19:07:50.12ID:lADNPtGP
>>380
試行錯誤の末、何とか動くようになりました。
結論としては、Gitも最新版にする必要があったようです。
> https://git-scm.com/download/win
nodeにもgitが入っていてそれを使っているものだと勘違いしてました。

ありがとうございました。
2017/03/27(月) 20:47:54.47ID:GesejkPS
gitは不要
2017/03/28(火) 17:23:59.52ID:3EkUFmFA
next.js使えるって思ったら
クライアントサイドのコードとサーバサイドのコードの連携方法が不明。
386デフォルトの名無しさん
垢版 |
2017/03/28(火) 18:15:57.57ID:kpaN19Jn
連携意味ない
387デフォルトの名無しさん
垢版 |
2017/03/29(水) 07:57:57.41ID:KsdrIF6a
expressでlistenしているサーバーの443ポートに、socket.ioをねじ込むことはできますか?
httpsしか許可していないLAN環境で使いたいためです。
2017/03/29(水) 08:25:41.12ID:go5sII7e
無理です
2017/03/29(水) 08:56:34.12ID:GhOdSF7q
>>387
普通にできるんじゃね?
390デフォルトの名無しさん
垢版 |
2017/03/29(水) 09:06:05.10ID:KsdrIF6a
>>389
ありがとうございます。
別IPか別ホストに分けて起動するようにします。
391デフォルトの名無しさん
垢版 |
2017/03/29(水) 09:18:00.82ID:KsdrIF6a
レス間違えました。388ありがとうございます。

>>389
そうなんですか? どうやるんでしょう?
何分、始めたばかりで基本の知識に乏しいものでして…
2017/03/29(水) 11:56:09.16ID:GhOdSF7q
>>391
expressのserverをioの引数にしてlistnするだけじゃなかったっけ?
393デフォルトの名無しさん
垢版 |
2017/03/29(水) 12:15:17.04ID:KsdrIF6a
>>392
ありがとうございます!
調べてやってみます。
394デフォルトの名無しさん
垢版 |
2017/03/29(水) 13:18:48.28ID:KsdrIF6a
こんな感じであっさりとできました。すげー!
keysはSSLの証明書ファイルとかです。

ex = require('express');
app = ex();
... some js ...
sv = https.createServer(keys, app).listen(port, bind);
io = require('socket.io').listen(sv);

ありがとうございました!!
395デフォルトの名無しさん
垢版 |
2017/04/01(土) 17:53:04.82ID:y/KMs3zV
Node.js@Windowsです。
spawnを使ってexpectのようなことってできないんでしょうか?
例えば以下のように、stdoutに「Y/N」が出力されたら「y」と答えるようなことがしたいのですが…。

const spawn= require('child_process').spawn;
const de = spawn('del', [ '/p', 'foo' ], { shell: true });
de.stdout.on('data', (data) => {
  if (data.toString().indexOf('Y/N') !== -1)
    de.stdin.write('y'); // ???
});
2017/04/02(日) 01:44:35.81ID:FpSI1UN2
next.jsってjsコードをクライアントでもサーバでも動くように書かないとだめなの?
例えば以下のような条件を入れてサーバとクライアントで処理を分岐することはできるけど
typeof window === `undefined`

そもそもimportについてはどうすればいいの?

fsがないって怒られんるだけどサードパーティのライブラリが依存してたら使わなくてもエラーになっちゃうし。
2017/04/02(日) 17:23:56.57ID:FpSI1UN2
react naitive躓きました
react-naitive init hogehoge

ってやってプロジェクト作ろうとするとdoneと表示されてもプロンプトが戻ってこない。
nodejsはanyenvを使って最新を入れてます。

ctrc+cで無理やり戻すと当然プロジェクトはできていないので何もできない。
2017/04/02(日) 19:13:35.17ID:FpSI1UN2
>>397
自己解決しました
2017/04/02(日) 20:42:34.04ID:FuCfSbZi
nodeたのしんでる?
2017/04/02(日) 22:53:02.06ID:0PLfOFLS
まだ勉強し始めなんだけどコールバック地獄を抜けたらPromiseラップ地獄が始まってる気がするゾ
2017/04/02(日) 23:49:36.07ID:jk9X28Xe
その先にはasync地獄が待ってるから早く進め
2017/04/02(日) 23:55:00.71ID:TvISwdcG
Rxで脱出できるよ
2017/04/03(月) 00:08:15.13ID:pMsTDita
RxのAsyncSubjectってPromiseと比較してどんなメリットがあるんだ?
async/awaitで使えないから不便と思う
2017/04/03(月) 00:37:17.85ID:UPqV6+1g
callback地獄なんか近づかずにpromiseとasync await始めたほうがいい。
promise抑えてからじゃないとasync await使えないから、promiseは必須な
2017/04/03(月) 00:44:19.88ID:UPqV6+1g
rxはreact nativeあたりと組み合わせるとどうなんだろうね?
coldとhotって概念があったり意外とつまずきやすい。全てがstreamという概念は素敵そうだけどreactとうまく組み合わせられるんか?
2017/04/03(月) 00:47:12.84ID:YqyQZW/v
async使い出すとやってくるtry catch地獄
2017/04/03(月) 00:50:42.75ID:CTM8h4Rc
コールバック地獄って無名関数でしか渡してないから問題なだけじゃね?
2017/04/03(月) 01:10:13.39ID:MrxLrKt6
fs.readdir(source, function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
})
}.bind(this))
}
})
})
}
})
2017/04/03(月) 03:42:09.46ID:XYXk6jFX
React + RxJSで興味ある人はこの辺でも見て
http://rudiyardley.com/redux-single-line-of-code-rxjs/
https://www.slideshare.net/jayphelps/rxjs-redux-react-amazing
2017/04/03(月) 03:53:47.87ID:CTM8h4Rc
>>408
fs.readdir(source, func1)

var func1 = function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(func2)
}
}
var func2 = function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(func4)
}
var func3 = function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
}
var func4 = function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(func3)
}.bind(this))
}
}
2017/04/03(月) 15:48:27.07ID:UPqV6+1g
>>409
redux学習中だけどRxJSと組み合わせると何が幸せになるん?
2017/04/03(月) 19:33:34.98ID:963+qoSh
RPとFRPの区別がついてない奴を馬鹿にして粋がれるとか
2017/04/03(月) 21:16:06.10ID:XYXk6jFX
>>411
RxJSのメリットは非同期の扱いを楽にしてくれること

RxJSとreduxを組み合わせるのは
一番よく使われてるフレームワークにのっかることで
Redux向けのツール類やノウハウなんかでそのメリットを享受するため

>>409の1つ目のリンクはRxJSだけでreduxと同じようなことをやってる例
2つ目は組み合わせて使う例
2017/04/03(月) 21:22:08.20ID:MrxLrKt6
>>410
少し訂正。問題は適切な名前をつけるのが難しいところにあると思うね。

var func1 = function(err, files) {
 if (err) {
  console.log('Error finding files: ' + err)
 } else {
  files.forEach(func2)
 }
}
var func2 = function(filename, fileIndex) {
 console.log(filename)
 gm(source + filename).size(func3)
}
var func3 = function(err, values) {
 if (err) {
  console.log('Error identifying file size: ' + err)
 } else {
  console.log(filename + ' : ' + values)
  aspect = (values.width / values.height)
  widths.forEach(func4.bind(this)))
 }
}
var func4 = function(width, widthIndex) {
 height = Math.round(width / aspect)
 console.log('resizing ' + filename + 'to ' + height + 'x' + height)
 this.resize(width, height).write(destination + 'w' + width + '_' + filename, func5)
}
var func5 = function(err) {
 if (err) console.log('Error writing file: ' + err)
}
fs.readdir(source, func1)
415デフォルトの名無しさん
垢版 |
2017/04/03(月) 23:44:03.74ID:1+ofpVMn
electronというかjsでデスクトップアプリって流行ると思いますか?
2017/04/03(月) 23:49:14.81ID:fhkbvCOs
そもそもデスクトップアプリが今日日流行らんような
2017/04/04(火) 00:42:57.27ID:P+kSkPRB
>>413
非同期の扱いを楽にするって観点ならasync awaitで必要十分じゃないか。
RxJSならではのメリットを知りたい。
2017/04/04(火) 00:47:36.02ID:P+kSkPRB
>>415
reactnativeでデスクトップアプリが作れるようになったほうがいいと思うけどね。性能面でも。

electronで結構キラーアプリは出てるから使えて損はない。
chromeOSが復活しないかな。
アプリごとにchromeが中で動いてるのって無駄な気がするんだよね
2017/04/04(火) 01:25:34.52ID:K8Tf42DL
WEB+DB vol.97 の特集が、React

WEB+DB vol.94 の特集が、Kotlin, Electron
2017/04/04(火) 01:35:05.25ID:y0lCbigz
>>417
>>409の2番目のリンク先を見て
2017/04/04(火) 03:08:30.98ID:QcgfrUUh
RxJSをみてるとJavaScriptにPromise入れるのは
もっと慎重にやるべきだったと思うね
2017/04/05(水) 00:42:45.34ID:wcVK36T3
reduxは非同期処理入れるのにミドルウエアが必要でその中の候補としてrxjsがあるってこと?

非同期処理は多用するんだからミドルウエア無しで対応しろよ
2017/04/05(水) 01:59:50.23ID:T1xSqOuQ
>>422
違うyo
2017/04/05(水) 02:29:41.05ID:kU4Jv4wh
非同期の方法がたくさんあるからビルトインにしてないんだろ
RxJSが使いたい→redux-observable
generaterが使いたい→redux-saga
Promiseが使いたい→redux-promise
好きなのを選べる
2017/04/05(水) 09:43:00.09ID:ObdYHa+p
rxは嫌いな奴は本当に嫌いなのでデフォルトにすると人死にが出る
426デフォルトの名無しさん
垢版 |
2017/04/05(水) 18:20:05.80ID:6P7JyL2t
猫は炬燵で丸くなる
2017/04/05(水) 20:06:36.76ID:zmBGqA0p
ReactとRx同時に使ったら、サイズが大きいのが気になりませんか?
2017/04/06(木) 14:59:39.46ID:TGfMJct9
>>421
かなり慎重だったよ
当初提案のメソッドや機能も大分削ぎ落とされたし
2017/04/06(木) 17:23:22.82ID:udT44U5Z
Rxってコンセプトがシンプルなのにいざ使おうとするとライブラリのインターフェースは複雑で、シンドってならない?
2017/04/06(木) 20:16:24.28ID:rNIgAdOn
>>428
でも結局Observableになるんだろ?
2017/04/06(木) 20:20:21.49ID:rNIgAdOn
Fetch APIがPromiseベースなので、処理がキャンセルできなくて困ったしな。
Fetch APIの戻り値はObservableに変更すべき。
2017/04/06(木) 20:23:20.40ID:rNIgAdOn
>>429
jQueryとPromise(Deffered)で関数型インターフェースには慣れていたから、
イベントでフィルタできる新しいメソッドが追加されたぐらいにしか思ってないよw
2017/04/07(金) 00:20:55.58ID:W6kcLwca
>>430
おいおい大丈夫か??
PromiseはPromiseで、ObservableはObservableで必要だよ
いいか?
ObがあればPrが要らないと言うのは
ジェネレーター関数があれば関数が要らないと言ってるのと同じことだぞ
2017/04/07(金) 01:10:39.92ID:muVw6N7l
配列があればnumberはいらない、的な
2017/04/07(金) 01:27:24.68ID:E9+XPTIr
関数とジェネレータ関数の関係とはちょっと違う気がするが
まあ言いたいことはわかる
2017/04/07(金) 01:53:54.75ID:feQdKcc1
>>433
説得力ゼロだなw

ObservableがあればPromiseはいらない。
ObservableにPromiseの機能が含まれてるから
2017/04/07(金) 02:08:35.05ID:muVw6N7l
promiseは単発、observableは連発
連発は単発を包含してるが最適とは限らない
2017/04/07(金) 02:12:06.86ID:xCtKbZyH
completeしか発生しないObservable = Promise

そもそも非同期=時間がかかる処理なのだから、
必然的に途中でキャンセルしたくなるのが普通。
キャンセルができない時点でPromiseは片手落ち
2017/04/07(金) 02:20:36.15ID:MrQDMpDH
>>436

promiseは非同期処理の約束手形observableはオブジェクトの値の変化を検知する仕組み。

なんでどっちかしかいらないって話になるのか
2017/04/07(金) 02:25:12.94ID:MrQDMpDH
>>438
Netflixとかなら動画を取り扱うからキャンセルできたほうがいいけど、
他の案件でも必要か?適材適所でしょう。
なんでもストリームとして取り扱うRxは宣言的な記述になるけど、
それが読みやすいかというと、
俺はpromise とasync awaitの方が読みやすい。
2017/04/07(金) 02:48:44.21ID:ZOMGhg3k
RxのObservableと廃案になったObject.observeが混在してる件
2017/04/07(金) 02:51:12.64ID:ZOMGhg3k
多機能があれば単機能はいらない
そんなふうに思って(ry
2017/04/07(金) 03:29:00.04ID:MrQDMpDH
>>441
えっ。違うのかそれ。解ってなかった。すまぬ
2017/04/07(金) 03:40:41.83ID:7WaVyHOC
RxのObservableはnodeのReadable Stream (flowing mode) みたいなもん
2017/04/07(金) 07:20:07.56ID:Bfn8G5Of
someがあればeveryは要らないって話?
2017/04/07(金) 09:40:29.94ID:xCtKbZyH
>>443
分かってなかったのかw
通りで話が噛み合わないわけか。

ObservableはPromiseの改良版
2017/04/07(金) 09:44:07.30ID:xCtKbZyH
>>445
違う。Promiseで十分と思えるような作業であっても
実際は、処理のキャンセルや進捗状況の把握が必要になる。
だからPromiseの仕様では不十分という話
2017/04/07(金) 10:06:57.71ID:NIm6zjXF
必要になるとは限らない
そもそもキャンセルの方法がないものも多い
2017/04/07(金) 10:50:07.00ID:a3tdoMh+
promiseでは全てのケースをカバーできない→正しい
だからpromiseはいらない→間違い
2017/04/07(金) 11:38:12.33ID:MrQDMpDH
でもPromiseだからこそasync awaitを駆使して同期プログラミングっポイ見た目でかけるわけで。
そこはRxではむりでしょ?そもそも宣言的な記述なウリなんだろうけども。
まぁ結局一人で開発だったらドッチもあってもいいけど
複数人プロジェクトだとRxは使いづらいわな。
2017/04/07(金) 11:54:59.99ID:5+HcG4Iv
Observeを束ねて全部処理が終わったら終了処理をしたいんだけど、どうやったらいいんだろう
2017/04/07(金) 12:16:24.62ID:dJwAVcRG
全部zipすれば
453デフォルトの名無しさん
垢版 |
2017/04/07(金) 12:28:20.19ID:Fuvg5lKD
Httpリクエスト…Promise
websocket…Observable
2017/04/07(金) 13:19:55.32ID:MrQDMpDH
んでRx使ったやつで良いプロジェクトってあるの?
RxSwift使ってたときは良いプロジェクトが見当たらなくて
汚い設計になってしまった。
455デフォルトの名無しさん
垢版 |
2017/04/07(金) 13:59:32.72ID:0MVaqOPa
>>449
これな
2017/04/07(金) 14:44:51.56ID:PRiizMve
要る要らないは個人の考えや開発スタイルによるものだしなぁ
2017/04/07(金) 17:45:00.18ID:7PhLdANq
>>452
やってみる
2017/04/07(金) 18:11:21.26ID:W6kcLwca
つうかキャンセルだけならCancelablePromise案もあるし、
実際はキャンセルが内蔵されていると不都合があるのでCancelToken案のように
仕組みを外部に用意するのがベストだからPromiseは今のままで良いと思うよ

あと因みに例で挙がってたfetchはキャンセル出来る。
キャンセルする必要があるような重たいファイルをDLするときは
Stream使うだろうから、その場合rs側にcancelメソッドがある。
2017/04/07(金) 18:13:30.99ID:W6kcLwca
逆に言うと、もしfetchがプロミスレベルでキャンセルに対応した場合、
こういうStream何かとの兼ね合いはどうするのかって話になる。
自動でrs.cancelが呼ばれるようにするのか、それともclosed例外吐くようにするのか。

やっぱりCancelTokenのように外側から突き刺す形が一番良いよ。
2017/04/07(金) 21:38:04.53ID:M/7BCwbh
なんかの勉強会でcancelable promiseの標準化は頓挫したと聞いた
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況