我在课堂上使用 promise 哪里出错了?

我使用的类如下

var user_class = function (body) {
    this.body = body;
};

user_class.prototype.login = function () {
    var that = this;
    return new Promise((fullfill,reject)=>{
        that.find_by_username()
            .then(that.user_exists)
            .then(that.check_credentials)
            .then(that.generate_token)
            .then(fullfill)
            .catch(reject);
    });
};

user_class.prototype.find_by_username = function () {
    var that = this;
    return new Promise((fullfill,reject)=>{
        user_model
            .find({username: that.body.username})
            .then((user)=>{
                that.user = user;
            })
            .then(fullfill)
            .catch(reject);
    });
};

user_class.prototype.user_exists = function () {
    var that = this;
    return new Promise((fullfill,reject)=>{
        console.log(that.user);
        if(that.user !== undefined) {
            fullfill();
        }else{
            reject(new Error('null user'));
        }
    });
};

问题是当我调用该login方法时,该find_by_username函数工作得很好,我们正确设置了我从console.logon验证的用户that.user但是该user_exits方法抛出错误,这意味着它发现user设置为未定义。我已经refered到thisthat和仍然没有工作。

有人可以解释一下我的逻辑有什么问题以及为什么没有将用户设置为对象吗?

乔纳斯·威尔姆斯

你的问题是上下文松散,但不像你想象的那样。这不是因为是通过绑定覆盖的,而是因为您在传递函数时松散了上下文:

user_class.prototype.login = function () {
  return new Promise((fullfill,reject)=>{
    this.find_by_username()
        .then(this.user_exists.bind(this))
        .then(this.check_credentials.bind(this))
        .then(this.generate_toke.bind(this))
        .then(fullfill)
        .catch(reject);
});
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我哪里出错了?

来自分类Dev

我哪里出错了 - JAVASCRIPT

来自分类Dev

jQuery效果:我哪里出错了?

来自分类Dev

C#我哪里出错了

来自分类Dev

我无法消除矩阵,哪里出错了?

来自分类Dev

计算阶乘,我哪里出错了?

来自分类Dev

我的 HTTP 请求哪里出错了?

来自分类Dev

简单的javascript添加,我哪里出错了?

来自分类Dev

我想知道我的代码哪里出错了

来自分类Dev

JS验证登录表单-我哪里出错了?

来自分类Dev

用C编写队列,我的代码哪里出错了

来自分类Dev

我在设置 bxSlider 幻灯片时哪里出错了?

来自分类Dev

谁能看到我这个 srcset 哪里出错了?

来自分类Dev

尝试使用 3 的中位数实现快速排序,但我不确定我哪里出错了?

来自分类Dev

我的推理哪里错了?

来自分类Dev

我哪里错了?

来自分类Dev

嗨,我对此有疑问,请告诉我我哪里出错了

来自分类Dev

滚动我自己的简单3列网格,我的数学哪里出错了?

来自分类Dev

我必须编写基本上在c ++中执行strlen()函数的代码,我哪里出错了?

来自分类Dev

我需要了解LINQ的帮助。我的理解哪里出错了?

来自分类Dev

线性回归测试数据违反训练数据。请解释我哪里出错了

来自分类Dev

通过spaCy分析来检索POS比例时,我哪里出错了?

来自分类Dev

我在此C ++容器的析构函数中哪里出错了?

来自分类Dev

我从mysql数据库中提取值时哪里出错了?

来自分类Dev

由于某些原因,点击无法正常工作..我哪里出错了?

来自分类Dev

我在哪里做错了什么?执行时出错(运行时错误)

来自分类Dev

我在转换此代码时哪里出错了,因此它不会将变量放入数组中?

来自分类Dev

pthread_join() 好像导致我的程序挂了,是哪里出错了?

来自分类Dev

我在这个用于功率查询的 M-Code 函数中哪里出错了?

Related 相关文章

  1. 1

    我哪里出错了?

  2. 2

    我哪里出错了 - JAVASCRIPT

  3. 3

    jQuery效果:我哪里出错了?

  4. 4

    C#我哪里出错了

  5. 5

    我无法消除矩阵,哪里出错了?

  6. 6

    计算阶乘,我哪里出错了?

  7. 7

    我的 HTTP 请求哪里出错了?

  8. 8

    简单的javascript添加,我哪里出错了?

  9. 9

    我想知道我的代码哪里出错了

  10. 10

    JS验证登录表单-我哪里出错了?

  11. 11

    用C编写队列,我的代码哪里出错了

  12. 12

    我在设置 bxSlider 幻灯片时哪里出错了?

  13. 13

    谁能看到我这个 srcset 哪里出错了?

  14. 14

    尝试使用 3 的中位数实现快速排序,但我不确定我哪里出错了?

  15. 15

    我的推理哪里错了?

  16. 16

    我哪里错了?

  17. 17

    嗨,我对此有疑问,请告诉我我哪里出错了

  18. 18

    滚动我自己的简单3列网格,我的数学哪里出错了?

  19. 19

    我必须编写基本上在c ++中执行strlen()函数的代码,我哪里出错了?

  20. 20

    我需要了解LINQ的帮助。我的理解哪里出错了?

  21. 21

    线性回归测试数据违反训练数据。请解释我哪里出错了

  22. 22

    通过spaCy分析来检索POS比例时,我哪里出错了?

  23. 23

    我在此C ++容器的析构函数中哪里出错了?

  24. 24

    我从mysql数据库中提取值时哪里出错了?

  25. 25

    由于某些原因,点击无法正常工作..我哪里出错了?

  26. 26

    我在哪里做错了什么?执行时出错(运行时错误)

  27. 27

    我在转换此代码时哪里出错了,因此它不会将变量放入数组中?

  28. 28

    pthread_join() 好像导致我的程序挂了,是哪里出错了?

  29. 29

    我在这个用于功率查询的 M-Code 函数中哪里出错了?

热门标签

归档