我正在通過爲網站編寫Chrome擴展來學習JavaScript。該網站有一個顯示4個視頻列表的部分,並帶有一個按鈕來加載更多視頻。當你點擊這個按鈕時,它會通過AJAX調用加載一個新的視頻列表。函數(從setTimeout調用)不返回值
我有一個函數getNextVideo()
,它獲取列表中下一個視頻的URL。例如,如果您使用的是第三個視頻,則會抓取第四個視頻的網址。如果您使用的是第四個視頻,則會通過功能getNextVideoList()
模擬點擊(加載新視頻列表),然後在1秒超時後抓取新加載列表中的第一個,以等待DOM更新(我嘗試使用突變觀察者,但對我的技能水平來說太複雜了)。
function getNextVideo()
{
if (getVideoPosition() == 4)
{
function ad()
{
getVideo(1);
}
setTimeout(ad, 1000);
getNextVideoList();
}
else
{
var index = getVideoPosition() + 1;
return getVideo(index);
}
}
getVideoPosition()
獲取列表中的視頻使用一些簡單的jQuery第n個孩子選擇的指數。它返回值1
,2
,3
或4
。
getVideo(n)
獲取視頻的索引(1,2,3或4)並返回該視頻的URL。返回值看起來像這樣在控制檯:"http://video.example.com/video-id"
我的問題是,當我的影片,是4日在隊列中跑getNextVideo()
,我得到undefined
在我的控制檯返回。在AJAX調用和後續DOM更新之後,如何使getNextVideo()
函數返回列表中第一個視頻的URL?
我可以看到你的Ajax調用嗎?您可能需要將您的回調包裝在代理功能中 – Paul
看起來您有一個錯誤。你確定你用來迭代的索引在範圍內嗎?特別是在getVideoPosition()和getVideo(n)中? – Hrishi
閱讀[是否有可能從'setTimeout'返回一個值?](http://stackoverflow.com/questions/13730709/is-it-possible-to-return-a-value-from-settimeout-without-a -callback-function?rq = 1)和[如何從AJAX調用中返回值?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax -call?rq = 1) – DCoder