从API获取电影数据's在javascript中
fetch movie data from API's in javascript
我有一个>15k电影的json对象,其中包含类似的IMDb ID
0: ObjectID: "1."
IdIMDb: "tt2322441"
Title: "Fifty Shades of Grey"
Year: 2015
1: ObjectID: "2."
IdIMDb: "tt1617661"
(...)
我希望用其他api的数据来完成这些数据
- 海报,运行时,流派,导演。。。可以在这里找到http://www.omdbapi.com/?i=tt0111161&plot=short&r=json
我的问题是:用这个api中的数据来完成我的数据最有效的方式是什么
我计划只运行一次这个程序并存储结果,这样它就可以遵守api限制。
我的第一个想法是做一些类似的事情
data.forEach(function (d, i) {
d.Poster = OMDbApi(d.IdIMDb);
...
}
function OMDbApi(i) {
$.ajax({
url:"http://www.omdbapi.com/?i="+i+"&plot=short&r=json",
crossDomain: true,
dataType: "jsonp",
success: function (response) {
return response.Poster;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
error = 1;
}
});
}
感谢您提供的任何帮助:-)
var totalCalls = 15000;
var calls = 0;
data.forEach(function (d, i) {
OMDbApi(I, d.IdIMDb); //posterCall
}
function OMDbApi(index, id) {
$.ajax({
url:"http://www.omdbapi.com/?i="+id+"&plot=short&r=json",
crossDomain: true,
dataType: "jsonp",
dataObj : index,
success: function (response) {
window.data[this.dataObj].Poster = response.poster;
calls++;
if (calls == totalCalls)
{
alert("We're done");
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
error = 1;
}
});
}
这与Ajax的异步特性有关。
您可能希望跟踪您提出的所有请求,并在所有请求完成时显示消息。我添加了一个关于如何跟踪的简单示例。关键是你知道你要打多少电话。因此,您需要计算id的数量,并将该数量乘以完成日期所需的调用。例如:每个对象都必须进行三次调用才能完成数据海报、导演和运行时。共有14500个对象。这将导致总共
3*14500 = 43500
调用。当调用完成时,脚本会将1添加到变量调用中。当通话次数等于totalCalls时,将显示警报。
相关文章:
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何使用Stripe'验证优惠券;s JavaScript API
- Facebook Javascript API:'/我/相册'不适用于其他用户
- 当我使用高度百分比时,谷歌地图javascript api不会显示
- Youtube JavaScript API不是't正在初始化
- Javascript API for Tableau
- 使用Google Maps JavaScript API v3和Geocoding API映射多个位置
- 谷歌地图Javascript API与网络服务API
- 如何使用Google撤销Oauth令牌'的Javascript API
- 可扩展的画布作为Google Maps Javascript API中的覆盖
- javascript api,用于在第三方域上存储身份验证令牌
- UglifyJs用于JSON缩小的JavaScript API
- 使用javascript API响应内部服务器错误将曲目上传到SoundCloud
- Youtube Javascript API播放/暂停/停止不工作
- 在弹出窗口中打开外部页面的Javascript api
- 谷歌地图Javascript API位置库
- 谷歌应用程序脚本html服务和加载谷歌地图javascript api V3
- javascript API调用导致旧数据
- 使用javascript api创建youtube的屏幕截图
- Google Maps JavaScript API v3:getDetails(请求,回调),用于多个位置