我正在尝试从TMDB获得随机的电影标题,代码正在起作用,但是有一个令人沮丧的问题,一些随机数什么都没有返回,我该如何循环或做某事或尝试尝试或尝试随机数直到我得到结果?我猜TMDB电影ID号中有差距!
const tmdb = require('tmdbv3').init('---');
function randomMovie(callback){
var r = Math.floor(Math.random()*1000);
tmdb.movie.info(r, (err ,res) => {
var x = res.title
callback(x);
})};
randomMovie(function(title){console.log(title)})
如果您检查响应标题并查看状态代码,我敢打赌,由于删除了ID,因此您将获得404(未找到(。而且,您不会获得"一无所有"的TMDB API返回一组错误,并使用代码来解决发生的事情。在这里记录在这里。
根据您的工作,知道事先可用的ID将对您有所帮助。您可以在文档中阅读一些可下载的文件。
我不建议使用此API,因为即使他的测试都失败了。您面临的问题是,如果没有数据的数字,它甚至不会返回其回调,因此您无法处理其错误(因为它不会抛出任何(。这是我从该API中获得的最好的:
'use strict';
const tmdb = require('tmdbv3').init('8b39b6f141f42e463b507151122d0971');
function randomMovie(callback) {
const r = Math.floor(Math.random() * 1000);
tmdb.movie.info(r, (err, res) => {
const x = res.title
callback(x);
})
};
function tryTenTimes() {
let firstTitle;
for (let i = 0; i < 10; i++) {
randomMovie(title => {
if (!firstTitle) {
firstTitle = title;
console.log(firstTitle);
}
});
}
}
tryTenTimes();
这是一个丑陋的解决方法,确实要问10,并采用第一个有效的方法。
编辑:我被要求与一段时间的循环一起做一个,这就是我设法做的
'use strict';
const tmdb = require('tmdbv3').init('8b39b6f141f42e463b507151122d0971');
function randomMovie(callback) {
const r = Math.floor(Math.random() * 1000);
tmdb.movie.info(r, (err, res) => {
const x = res.title
callback(x);
})
};
function tryWhileTimes() {
let firstTitle;
while (!firstTitle) {
return new Promise((resolve, reject) => {
randomMovie(title => {
if (!firstTitle) {
firstTitle = title;
console.log(firstTitle);
resolve();
}
});
});
}
}
tryWhileTimes()