javascript がツイートをフェッチするための oauth ライブラリを使用しようとしています。Twitter タイムラインの URL を取得して列に配置するオブジェクトを作成しました。コードは
lister=function(opts) {
this.setresource =lister.setresource;
this.config = lister.config;
this.config.resource = opts;
this.putTweet = lister.putTweet;
this.listerstrap = lister.listerstrap;
this.addStrip = lister.addStrip;
this.setTweets = lister.setTweets;
this.addTweets = lister.addTweets;
}
ここで、lister の 2 つの新しいオブジェクトを作成すると、
var l1 = new lister('user1'); //user1 and user2 refer to url of the timelines
l1.listerstrap();
var l2 = new lister('user2');
l2.listerstrap();
リスターストラップ関数は次のとおりです。
lister.listerstrap = function () {
this.addStrip().setresource().addTweets();
}
問題は addTweets() で発生します
lister.addTweets = function () {
var _ = this;
oauth.get(twiapi + _.config.resource, function (res) {
_.setTweets(JSON.parse(res.text));
console.log(_.config.resource); // *
});
* では、this (_) は同じ (l2 インスタンス) を参照するため、setTweets が呼び出されると、両方のリソースからのツイートが同じ列に設定されます。
これは閉鎖の問題ですか?
編集: タイムラインまたはリストに基づいてツイートを異なる列に設定しようとしています (たとえば Tweetdeck で行われているように、リストごとに異なる列があります)。両方の URL からツイートを取得しますが、同じ列に設定されています。_ には、addStrip() で作成した各列の div 要素への参照が含まれています。しかし、どういうわけか _ はコールバック内の同じインスタンスを参照しています。ツイートをそれぞれの列に設定したい