离子2:设置间隔

Ionic 2 : Set interval(离子2:设置间隔)
本文介绍了离子2:设置间隔的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在 .ts 文件中设置间隔,但我不明白如何在间隔中使用同一文件中的函数.

I try to set an interval in a .ts file but I don't understand how to use a function in the same file in the interval.

解释一下:

我的间隔设置:

this.task = setInterval(function () {
            this.refreshData();
        }, 300);

和我的函数在同一个 ts 文件中:

And my function in the same ts file :

refreshData() : void{
        console.log('update...');
    }

当我在我的设备上运行时,我遇到了这个错误:

When I run on my device, I have this error :

04-19 10:38:57.535 21374-21374/com.ionicframework.app722890 I/chromium: [INFO:CONSOLE(79432)] "TypeError: this.refreshData is not a function
                                                                                      at file:///android_asset/www/build/main.js:10987:18
                                                                                      at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:10284)
                                                                                      at Object.onInvokeTask (file:///android_asset/www/build/main.js:39626:37)
                                                                                      at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:10220)
                                                                                      at e.runTask (file:///android_asset/www/build/polyfills.js:3:7637)
                                                                                      at invoke (file:///android_asset/www/build/polyfills.js:3:11397)
                                                                                      at e.args.(anonymous function) (file:///android_asset/www/build/polyfills.js:2:30193)", source: file:///android_asset/www/build/main.js (79432)

我尝试这种方式但我不工作:

I try this way but I doesn't work :

this.task = setInterval(this.refreshData(), 300);

这只会调用我的函数一次.

This call my function only one time.

有人有想法吗?

推荐答案

使用箭头函数

this.task = setInterval(() => {
  this.refreshData();
}, 300);

或像这样存储上下文

let self = this;
this.task = setInterval(function () {
  self.refreshData();
}, 300);

或使用绑定

this.task = setInterval((function () {
  this.refreshData();
}).bind(this), 300);

如果只有一个函数调用:

if only one function call:

this.task = setInterval(this.refreshData.bind(this), 300);

您可以通过 https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/this%20%26%20object%20prototypes/ch1.md

这篇关于离子2:设置间隔的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)