将包返回的数据分配给变量

时间:2019-11-06 20:41:19

标签: javascript node.js json

假设我有以下工作代码:

const myPackage = require('myPackage');
myPackage.internal_func(parameter).then(console.log);

这将返回一个JSON,例如:

{
    a: 'valA',
    b: 'valB'
}

如果我只希望将a的值分配给变量怎么办?

我尝试过:

const myPackage = require('myPackage');
var data = myPackage.internal_func(parameter).a;
console.log(data);

不幸的是,这返回:

undefined

2 个答案:

答案 0 :(得分:1)

如果myPackage.internal_func(parameter)返回承诺,则您需要使用async/await或将函数与then()链接。

使用Then()

const myPackage = require('myPackage');
myPackage.internal_func(parameter).then(data => {
   console.log(data.a);
});

使用异步/等待

const async = require('async');
const myPackage = require('myPackage');
const testFunction = async function(){
  var data = await myPackage.internal_func(parameter);
  console.log(data.a);
}

如果您在函数中使用此代码,请不要忘记在函数声明中包括异步。

答案 1 :(得分:1)

看起来像您的示例Parameters: IpAddress: Description: Your IP Address Type: String Resources: SecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Example SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Sub '${IpAddress}/24' 返回了Promise,这就是为什么它没有internal_func属性的原因。

有以下几种选择:

a

// Async/await
(async function(){
  const parameter = {}; //some param
  const myPackage = require('myPackage');
  const { a } = await myPackage.internal_func(parameter);
  console.log(a);
})();