2017-06-26 180 views
0

我试图从tmdb中获得一个随机电影标题,代码正在工作,但有一个令人沮丧的问题,一些随机数字返回absolutely nothing,我该如何循环或做些事情或尝试随机数直到我得到结果?我想在tmdb电影ID号码有差距!tmdb什么也没有返回,有时返回值

const tmdb = require('tmdbv3').init('---'); 
 

 
function randomMovie(callback){ 
 
      var r = Math.floor(Math.random()*1000); 
 
      tmdb.movie.info(r, (err ,res) => { 
 
\t   var x = res.title 
 
\t   callback(x); 
 
     })}; 
 
      
 
randomMovie(function(title){console.log(title)})

回答

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() 
+0

这段代码是做同样的事!有没有更好的API可以完成这项任务?我搜索,似乎这是唯一一个那里! – cockoh10uv

+0

我会建议不要拨打固定的电话号码,而应该使用一段时间,并停止只是当你得到一个标题, 也有一个max_attempt标志,它会停止,而 – Shivam

+0

你能告诉我怎么可以做一个while循环在这个案件? @Shivam – cockoh10uv

0

如果检查响应头,并期待在状态代码我打赌你由于ID已被删除,因此得到了404(未找到)。并且您不会收到“无回”的TMDB API返回一组代码错误,以便排查发生的情况。这是记录here

根据你在做什么,知道什么ID提前可用将帮助你。这里有一些可下载的文件,你可以阅读关于in the documentation