【问题标题】:How can I populate sigma.js graph asynchronously with google feed API?如何使用 google feed API 异步填充 sigma.js 图?
【发布时间】:2012-12-18 13:47:23
【问题描述】:
我想使用 javascript 库 Sigmajs 将我的 wordpress 和 github 活动表示为图形网络。我正在使用 google feed api 来获取所有活动的 RSS 提要,并将它们翻译成图上的节点和边。
但是 feed api 异步返回 rss 结果。据我所知,sigmajs 本身并不支持这一点,所以我得到了未定义的引用。此时它只有大约 20-30 个节点。一些可能的解决方案是:
强制 google feed api 同步返回结果。
(不知道怎么做,但我假设它与适当的闭包有关?)
为每个提要结果创建 sigma 实例,并将所有图形对象推送到单个实例中。
(不确定它是否可行,并且库没有足够的文档来尝试)
每次返回结果时触发一个事件,以确保 sigma 一次只处理一个。
(再一次,不知道该怎么做)
非常感谢任何指导。谢谢。
这是我迄今为止的工作http://fraseraddison.com
更多示例和来源http://sigmajs.org/
【问题讨论】:
标签:
javascript
asynchronous
rss
visualization
google-feed-api
【解决方案1】:
我采用的解决方案是触发自定义事件。由于 javascript 的同步事件处理队列,似乎可以正常工作。
function getFeed()
{
return function callback(result)
{
if (!result.error)
{
console.log("Feed retrieved.");
fireFeed(result.feed);
}
else
console.log("Feed retrieval failed!");
}
}
function fireFeed(feed)
{
//console.log(feed);
var event = new CustomEvent(
"newFeed",
{
detail: {
message: feed
},
bubbles: true,
cancelable: true
}
);
document.dispatchEvent(event);
}
document.addEventListener('newFeed', function(e)
{
var feed = e.detail.message;
console.log('feed triggered');
//console.log(feed);
buildFeed(feed);
},true);