TVML JS setInterval无法正常工作?

时间:2018-04-30 13:18:55

标签: javascript tvml

我正在尝试使用TVML创建一个简单的幻灯片放映应用。我正在尝试在我的javascript函数中使用setinterval函数,但在tvOS模拟器上它无法正常工作。当我在另一个处理程序(即App.onWillEnterForeground)中调用该函数时,我的屏幕刷新,但不是在定时间隔。有人知道TVML的局限性吗?或者如何解决这个问题?

我没有看到屏幕更新,但在网络服务器上也没有看到任何请求。

function MyStartup(){
    var alert = createAlert("Hello", "Welcome to tvOS");
    navigationDocument.pushDocument(alert);
        var interval = setInterval(MyInterval(), 5000);
}

function MyInterval(){
    var newDoc = createAlert("Hello", "Welcome to tvOS");
    const oldMain = navigationDocument.documents[0];
    navigationDocument.replaceDocument(newDoc, oldMain);

}

var createAlert = function(title, description) {
    var d = new Date();
    var n = d.getTime();
    var alertString = `<?xml version="1.0" encoding="UTF-8" ?>
        <document>
                <mainTemplate>
                    <background>
                        <img src="http://localhost:9001/IMG_8066.jpg" />
                    </background>
                    <menuBar>
                        <nowPlayingMenuItem>
                            <title>${n}</title>
                        </nowPlayingMenuItem>
                        <section>
                            <menuItem></menuItem>
                        </section>
                    </menuBar>
                </mainTemplate>
        </document>`
    var parser = new DOMParser();
    var alertDoc = parser.parseFromString(alertString, "application/xml");
    return alertDoc
}

1 个答案:

答案 0 :(得分:0)

我认为setInterval确实有效。但是你在那叫错了。

代替

var interval = setInterval(MyInterval(), 5000);

我认为您应该省略()并称其为

var interval = setInterval(MyInterval, 5000);

您试图将引用(?或JS中调用的任何内容)传递给回调函数;但是,您要将函数MyInterval()的RETURN VALUE(它为null?)传递到回调中,因此回调没有执行任何操作。