2017-06-26 128 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