在聚合物元素中循环ajax请求

时间:2018-01-30 23:06:56

标签: node.js ajax polymer

快速的问题,我快到了。 我有一个快速服务器,每当我进行GET on / value时发送一个随机字符串(用于测试目的):

.get('/value', function(req, res){
    
    res.send(un());
})

我有一个通过(v1.4.4)发出ajax请求的Polymer元素,当我进行一次调用时,它的效果非常好,但我不明白如何自动进行调用。

这是元素:

<!DOCTYPE html>
<link rel="import" href="./../bower_components/polymer/polymer.html">
<link rel="import" href="./../bower_components/iron-ajax/iron-ajax.html">
<dom-module id="neito-photoresistor">
    <template>
        <style>
        </style> 
        
        <span>Ambient luminosity = <span>{{lum_pct}}</span> %</span>
        <iron-ajax id="ajaxValueUpdater" url="http://localhost:3000/value" on-response="_updateValue" handle-as="text" debounce-duration="500">
        </iron-ajax>
    </template>
    <script>
        Polymer({
            is: 'neito-photoresistor',
            properties: {
                lum_pct: {
                    type: String,
                    value: 'uniqid waiting to change...',
                    reflectToAttribute: true
                }
            },
            ready: function() {
                this.$.ajaxValueUpdater.generateRequest();//Launch the request once and it is working
            },
            _updateValue: function(event){
                this.lum_pct = event.detail.response;//It work
            }
        });
    </script>
</dom-module>

所以我尝试使用setInterval(),使用async()和while(true)(真是个坏主意)

以下是我的尝试和给出的错误:

ready: function() {
                this.async(this.$.ajaxValueUpdater.generateRequest(), 2000);
            },

错误:未捕获TypeError:callback.call不是函数     在polymer.html:1315

其他尝试:

ready: function() {
                setInterval(this.$.ajaxValueUpdater.generateRequest(), 2000);
            },

错误:VM93:1未捕获的SyntaxError:意外的标识符

最后一个,我确信它会起作用:

ready: function() {
                var ajax = this.$.ajaxValueUpdater;
                setInterval(function(ajax){
                    ajax.generateRequest();
                }, 2000);
                
            },

错误:未捕获的TypeError:无法读取未定义的属性“generateRequest”     在neito-photoelectricistor.html:26 (如果用this.async替换最后一个示例,则出现相同的错误)

我知道我在解决方案的一个方面。有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

更改您的就绪功能,如下所示:

ready: function() {
            var ajax = this.$.ajaxValueUpdater;
            setInterval(() => {
                ajax.generateRequest();
            }, 2000);

        },