tmdb什么都不返回,有时会返回值

时间:2017-06-26 14:32:38

标签: javascript node.js null themoviedb-api

我正在尝试从tmdb获取一个随机电影标题,代码正在运行但是有一个令人沮丧的问题,一些随机数返回absolutely nothing,我怎么能循环或做某事或尝试随机数直到我得到结果呢?我想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)})

2 个答案:

答案 0 :(得分:0)

我不建议使用此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问,并采取第一个有效的。

编辑:我被要求用while循环做一个,这就是我设法做到的方式

'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()

答案 1 :(得分:0)

如果您检查响应标头并查看状态代码,我打赌您的ID已被删除,因此返回404(未找到)。并且你不会得到“没有回来”TMDB API返回一组错误代码,你可以解决正在发生的事情。记录在案another answer

根据您正在做的事情,提前知道可用的ID将对您有所帮助。有一些可下载的文件,您可以阅读here