【问题标题】:I want variable fileContent outside but it is saying undefined我想要变量 fileContent 外面,但它说未定义
【发布时间】:2019-06-08 14:07:20
【问题描述】:

我从 Promise 中获取数据,当它被解决但我找不到如何使用这些数据的方法时,代码会更清晰。 此外,我不清楚代码中的“this”是指哪个对象。据我说,它引用了全局对象。

p.then(function(data){this.fileContent = data});
 return res.render('experiments',{pageTitle:'Experiments',user:req.session.email,data:this.fileContent}); 

数据将分配给 this.fileContent 但在 res.render 函数中,当我使用 this.fileContent 时,它说未定义为什么会这样

【问题讨论】:

    标签: node.js this shadowing


    【解决方案1】:

    使用箭头函数,在您的示例中,如果您调试并看到,在您的示例中,该函数将它自己的自身绑定到 this,而箭头函数实际上并不绑定它自己的 this。箭头函数在词法上绑定它们的上下文,因此 this 实际上是指原始上下文。

    p.then((data)=>{this.fileContent = data});
    

    或者很简单,您可以使用此范围之外的变量并将数据分配给它,就像在您的代码中一样

    let resp ;
    p.then(function (data){resp = data}); // do not use this
    // process resp here
    

    【讨论】:

    • 你能给我推荐一些可以深入阅读本文的资源吗?
    • 如果有效,请接受或投票以供其他人参考
    • 不工作,我想我需要提一下,整个代码都在箭头函数内。
    • 那么你不能使用外部变量并为其分配数据
    • 我尝试过使用外部变量,例如 var fileContent ; p.then((data)=>{ fileContent = data ; });控制台.log(this.fileContent); return res.render('experiments',{pageTitle:'Experiments',user :req.session.email,data:fileContent});
    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2023-03-16
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多