私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレサーバーサイドJavaScript総合

みんなの評価 :
レスフィルター : (試験中)
過去ログを表示するためにこういう感じのコードを組んだんだが、dotCloudのようなところだとあまりに遅すぎて死にそうになる
まとめて送れば解決しそうなんだが、ドキュメントを読んでもlazyで読み込みが完了したときにコールバックさせる方法がわからない
lazyでドキュメント完了時に呼びさされるイベントとかあったら教えてほしい
var state = fs.stat(path,function(err,state){
if(err)
return;
var stream = fs.createReadStream(path);
new lazy(stream)
.lines
.forEach(function(line){
socket.json.emit("req pastlog",CreateMessageFromText(line.toString()));
});
});
まとめて送れば解決しそうなんだが、ドキュメントを読んでもlazyで読み込みが完了したときにコールバックさせる方法がわからない
lazyでドキュメント完了時に呼びさされるイベントとかあったら教えてほしい
var state = fs.stat(path,function(err,state){
if(err)
return;
var stream = fs.createReadStream(path);
new lazy(stream)
.lines
.forEach(function(line){
socket.json.emit("req pastlog",CreateMessageFromText(line.toString()));
});
});
小さいシステム2・3個nodeで作ってみた。普通に使えたけど、複雑なシステムになった時にどーなるかなと思ってる。
皆はどうですか?
皆はどうですか?
>>220
node.jsで動くなり茶スクリプト作ったけど、あんまり使いたくないねえ
そういや、匿名関数でこういうことやると落ちるんだが、うちだけ?
function foo(){
this.Add = function(){
console.log("aaa");
}
function GetRoomList(callback){
var stream = fs.createReadStream($room_configure_file_name);
new lazy(stream)
.lines
.forEach(function(line){
this.Add();
})
});
}
}
node.jsで動くなり茶スクリプト作ったけど、あんまり使いたくないねえ
そういや、匿名関数でこういうことやると落ちるんだが、うちだけ?
function foo(){
this.Add = function(){
console.log("aaa");
}
function GetRoomList(callback){
var stream = fs.createReadStream($room_configure_file_name);
new lazy(stream)
.lines
.forEach(function(line){
this.Add();
})
});
}
}
括弧の対応が取れてないのはともかく、
上のthisと下のthisは同じものにならないんじゃないの?
上のthisと下のthisは同じものにならないんじゃないの?
ああ、本当だw
入れ子の無名関数のthisはどこにも参照されていない筈
入れ子の無名関数のthisはどこにも参照されていない筈
>>225
すまん
肝心な部分が抜けてた
function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
}
function GetRoomList(callback){
var stream = fs.createReadStream("foo.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
})
});
}
GetRoomList();
}
すまん
肝心な部分が抜けてた
function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
}
function GetRoomList(callback){
var stream = fs.createReadStream("foo.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
})
});
}
GetRoomList();
}
いやだからさwまずは文法エラーが出ないようにしろよw
括弧の対応とれてないだろうがw
無理やり文法エラーなおして、this.Add()の関数になにか適当な処理いれて、
最後にfoo()を呼び出すようにすれば俺の環境だとちゃんと動くぞ
上のthisと下のthisに違うものが入るかと思ったが、両方とも同じグローバルオブジェクトがはいるんだな
forEachの仕様をよく理解してなかったわ
括弧の対応とれてないだろうがw
無理やり文法エラーなおして、this.Add()の関数になにか適当な処理いれて、
最後にfoo()を呼び出すようにすれば俺の環境だとちゃんと動くぞ
上のthisと下のthisに違うものが入るかと思ったが、両方とも同じグローバルオブジェクトがはいるんだな
forEachの仕様をよく理解してなかったわ
var lazy = require("lazy");
var fs = require("fs");
function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
console.log(line);
}
function GetRoomList(callback){
var stream = fs.createReadStream("roomlist.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
});
}
GetRoomList();
}
$test = new foo();
文法エラーを修正したが、こんなエラーが出る
var fs = require("fs");
function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
console.log(line);
}
function GetRoomList(callback){
var stream = fs.createReadStream("roomlist.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
});
}
GetRoomList();
}
$test = new foo();
文法エラーを修正したが、こんなエラーが出る
TypeError: Object #<Object> has no method 'Add'
at C:\Users\xxx\Documents\WebChat\test.js:17:9
at EventEmitter.self.forEach (C:\Users\xxx\Documents\WebChat\node_modules
\lazy\lazy.js:62:13)
at EventEmitter.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\
lazy\lazy.js:46:19)
at EventEmitter.emit (events.js:93:17)
at self.bucket.yield (C:\Users\xxx\Documents\WebChat\node_modules\lazy\la
zy.js:152:18)
at Function.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\lazy
\lazy.js:186:21)
at self.bucket (C:\Users\rirufa\Documents\WebChat\node_modules\lazy\lazy.js:
158:21)
at EventEmitter.emit (events.js:93:17)
at ReadStream._emitData (fs.js:1365:10)
at afterRead (fs.js:1347:10)
at C:\Users\xxx\Documents\WebChat\test.js:17:9
at EventEmitter.self.forEach (C:\Users\xxx\Documents\WebChat\node_modules
\lazy\lazy.js:62:13)
at EventEmitter.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\
lazy\lazy.js:46:19)
at EventEmitter.emit (events.js:93:17)
at self.bucket.yield (C:\Users\xxx\Documents\WebChat\node_modules\lazy\la
zy.js:152:18)
at Function.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\lazy
\lazy.js:186:21)
at self.bucket (C:\Users\rirufa\Documents\WebChat\node_modules\lazy\lazy.js:
158:21)
at EventEmitter.emit (events.js:93:17)
at ReadStream._emitData (fs.js:1365:10)
at afterRead (fs.js:1347:10)
fooは普通の関数じゃなくてコンストラクターなのかw
それだと上のthisと下のthisは違ってしまうからうごかんわw
this.Add = function(line){
の上に
var self = this;
とかいれて、
下のthisをselfに置き換えればとりあえず動くよw
それだと上のthisと下のthisは違ってしまうからうごかんわw
this.Add = function(line){
の上に
var self = this;
とかいれて、
下のthisをselfに置き換えればとりあえず動くよw
ありがとう
それでやったら動いた
それでやったら動いた
このforEachはArray.prototype.forEachかと思ったら、lazyモジュールが提供するforEachメソッドなのか
javascriptの場合、コールバック関数内でthisが何になるかは、コールバックを渡した関数の仕様に依存することになるから
仕様がはっきりしない場合はthisは使えないと思ったほうがいいね
javascriptの場合、コールバック関数内でthisが何になるかは、コールバックを渡した関数の仕様に依存することになるから
仕様がはっきりしない場合はthisは使えないと思ったほうがいいね
varで宣言も別に悪くないと思うけどな。決めの問題で。
Pythonみたく代入した場所でスコープ決まったり、Rubyみたく変数名の表記で決まったり、それぞれルールがあるだけじゃね?
Pythonみたく代入した場所でスコープ決まったり、Rubyみたく変数名の表記で決まったり、それぞれルールがあるだけじゃね?
Javascripのthisのスコープが変るのは、
オブジェクト生成後にあとからメソッドが追加できるという自由すぎる言語特性ゆえ、
thisのスコープをJavaなんかと同様にしてしまうと、弊害があると考えられたから。
これ結構常識だと思うのだけど...
オブジェクト生成後にあとからメソッドが追加できるという自由すぎる言語特性ゆえ、
thisのスコープをJavaなんかと同様にしてしまうと、弊害があると考えられたから。
これ結構常識だと思うのだけど...
相変わらず過疎ってるな
ちょい前にNodeの1.0ブランチできたってね
ちょい前にNodeの1.0ブランチできたってね
>>248
もちろん8系
もちろん8系
類似してるかもしれないスレッド
- [JavaScript]プログラム作成します (981) - [13%] - 2010/12/8 21:02
トップメニューへ / →のくす牧場書庫について