TMDB什么都没有返回,有时会返回值



我正在尝试从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()

相关内容

  • 没有找到相关文章

最新更新