繁体   English   中英

我在Ionic中得到一个未定义的变量,我不确定为什么吗?

[英]I'mg getting an undefined variable in Ionic and I'm not sure why?

我正在尝试加密和解密Ionic中的简单文本。 这是我的代码:

encryptedData : any;

encryptData(data){
  this.aes
      .encrypt(this.secureKey, this.secureIV, data)
      .then(res => {
        console.log("Encrypted Data: " + res);
        this.encryptedData = res;
      })
      .catch(err => {
        console.log("Error encrypting data: " + err);
      });
 }

数据是简单的纯文本,并且从日志中可以看到它被加密了:

在此处输入图片说明

但是,在将变量(res)设置为变量后,变量encryptedData变为空。 我可能做错了什么?

欢迎来到JavaScript中的“ this”世界。

箭头函数绑定到执行上下文-在此示例中,将使用Promise内部提供的某种“ this”来调用它。

您可以通过将常规函数与“ bind(...)”结合使用来强制调用上下文。

请看下面的例子。

Promise
      .resolve("new value")
      .then((res) => {
        this.myProp = res;
      });

将不起作用,但这是:

Promise
    .resolve("new value")
    .then(function(res){
        this.myProp = res;
    }.bind(this));

将。

看看这个jsfiddle,它再现了您的问题(打开浏览器的devtools以查看控制台输出) https://jsfiddle.net/mg7pjLz0/4/

看起来crypto()返回一个Promise; 在这种情况下,您只能使用'then'块内的返回值。 您应该通过console.log(“ Encrypted Data Assigned ?:” + this.encryptedData);进行检查。 如果分配了值,则在分配后立即执行。 如果已打印该值,则可能您正在尝试在异步函数返回之前使用该值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM