如何获得此承诺返回的数据?

时间:2019-06-21 20:47:55

标签: javascript node.js meteor

我正在使用Google Cloud API将公司添加到Google Talent Solution。 他们通过承诺返回数据。承诺解决后,我需要返回response.name值。但是从.then()方法返回的值是:

承诺{response.name}

如何从promise中获取response.name值,以便我可以实际使用它。

createGoogleCompany:函数(projectId,tenantId,displayName,externalId){

  const client = new talent.CompanyServiceClient();
  // const projectId = 'Your Google Cloud Project ID';
  // const tenantId = 'Your Tenant ID (using tenancy is optional)';
  // const displayName = 'My Company Name';
  // const externalId = 'Identifier of this company in my system';
  const formattedParent = client.tenantPath(projectId, tenantId);
  const company = {
    displayName: displayName,
    externalId: externalId,
  };
  const request = {
    parent: formattedParent,
    company: company,
  };
  return promise = client.createCompany(request)
    .then(responses => {
      const response = responses[0];
      console.log(`Created Company`);
      console.log(`Name: ${response.name}`);
      console.log(`Display Name: ${response.displayName}`);
      console.log(`External ID: ${response.externalId}`);
      return response.name
    })
    .catch(err => {
      console.error(err);
    });
},

var nameValue = createGoogleCompany(data,data2,data3,data4)createGoogleCompany(data).then((nameValue)=> {       console.log(“ Name Value”,nameValue);       });

^^这仍然会返回未决的Promise对象。

1 个答案:

答案 0 :(得分:-1)

您从函数中返回了一个Promise,因此您需要在外部的Promise的then子句中获取它。

createGoogleCompany(data).then((nameValue) => {
    console.log("Name Value", nameValue);
});

如果您可以使用异步功能,则可以编写类似的功能

const someFunction = async () => {
   const name = await createGoogleCompany(data);
}

异步功能只是底层的承诺,但它们使事情看起来更加同步