1

我使用dojo/reqeustdelcare进行测试。

我声明了一个带有函数的新类,该函数将使用 dojo/request 进行查询。在 promise 函数中,我无法检索this成员。

   var TestJson = declare(null, {
       name: "hello",
       doJson: function(){
          request.post("someTarget").then(function(res){
             alert(this.name);
          });
       }
  });

   var obj= new TestJson();
   obj.doJson();

如上所述,当 post 返回时,会调用alert(this.name) 。但是this指向Window对象,所以this.name是未定义的,没有指向TestJson.name。那么如何检索 TestJson.name 呢?谢谢!

4

1 回答 1

2

有几种方法可以解决这个问题。

引用闭包范围内的变量:

var TestJson = declare(null, {
  name: "hello",
  doJson: function(){
    var instance = this;
    request.post("someTarget").then(function(res){
      alert(instance.name);
    });
  }
});

使用该dojo/_base/lang模块设置回调的执行上下文:

var TestJson = declare(null, {
  name: "hello",
  doJson: function(){
    var callback = lang.hitch(this, function(res){
      alert(this.name);
    });
    request.post("someTarget").then(callback);
  }
});
于 2013-03-01T10:38:33.453 回答