加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在dojo Class中调用JavaScript的setTimeOut

发布时间:2020-12-16 21:58:39 所属栏目:百科 来源:网络整理
导读:我正在尝试将我的 JavaScript函数转换为dojo类.我在我的一个JS方法中有一个setTimeOut(“functionName”,2000).如何使用dojo.declare方法从decared类中的方法调用它.例如,下面是我的自定义类. dojo.declare("Person",null,{ constructor:function(age,countr
我正在尝试将我的 JavaScript函数转换为dojo类.我在我的一个JS方法中有一个setTimeOut(“functionName”,2000).如何使用dojo.declare方法从decared类中的方法调用它.例如,下面是我的自定义类.
dojo.declare("Person",null,{
                    constructor:function(age,country,name,state){
                        this.age=age;
                        this.country=country;
                        this.name=name;
                        this.state=state;
                    },moveToNewState:function(newState){
                        this.state=newState;
//I need to call "isStateChanged" method after 2000 ms. How do I do this?
                        setTimeOut("isStateChanged",2000);
                    },isStateChanged:function(){
                        alert('state is updated');
                    }
                });
var person=new Person(12,"US","Test","TestState");
person.moveToNewState("NewState");

请告诉我如何在2000ms后从moveToNewState方法调用isStateChanged方法.

您正在寻找的是一种将此值绑定到setTimeout将调用的函数的方法:
moveToNewState:function(newState){
    // Remember `this` in a variable within this function call
    var context = this;

    // Misc logic
    this.state = newState;

    // Set up the callback
    setTimeout(function() {
        // Call it
        context.isStateChanged();
    },2000);
},

以上是使用闭包来绑定上下文(参见:Closures are not complicated),这是执行此操作的常用方法. Dojo可以提供内置函数来生成这些“绑定”回调(Prototype和jQuery do). (编辑:确实如此,他在peller以下的评论中指出了dojo.hitch.)

关于这个一般概念的更多信息:You must remember this

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读