使用绑定功能维护原始回调“this”

时间:2017-07-27 02:45:04

标签: javascript callback

我了解bind创建了一个替换了this值的新函数。例子

function edit(req, res) {
    db.User.findById('ABCD', (function(err, user){
        this.foo(user);
    }).bind(this));
};

来自Maintaining the reference to "this" in Javascript when using callbacks and closures

让回调函数提供自己的参数。

我正在使用http.min.js,它处理这样的回调:

http.get({
      url: "http://localhost:8080/player/status/" + name,
      onload: function() {
        console.log(this.responseText);

注意到传入的内容不足 - this.responseText会为我提供一个我可以为JSON解析的字符串。

http.min.js回调维护“this”并绑定到我的回调函数的最简单方法是什么?

我喜欢

的语法
http.get({
      url: "http://localhost:8080/player/status/" + name,
      onload: this.handlePlayerInfo.bind(this);

如果可能的话,想要使用它,而不是使用var that

使用库:https://github.com/quantumpotato/http.min.js/blob/master/http.min.js

1 个答案:

答案 0 :(得分:0)

看起来使用var that是维持回调的唯一方法"这个"状态。

所以我会做

Callback.hell = this;
    http.get({
      url: "http://localhost:8080/join/" + Player.name,
      onload: this.handleJoin;
    });

handleJoin(res) {
    var json = JSON.parse(JSON.parse(this.responseText));
    console.log("join" + j);
    console.log(j.name);
    Callback.hell.status.auth = j.auth;
    Callback.hell.status.name = j.name;
    Callback.hell.getPlayerInfo();
  }