我正在使用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对象。
答案 0 :(得分:-1)
您从函数中返回了一个Promise,因此您需要在外部的Promise的then子句中获取它。
createGoogleCompany(data).then((nameValue) => {
console.log("Name Value", nameValue);
});
如果您可以使用异步功能,则可以编写类似的功能
const someFunction = async () => {
const name = await createGoogleCompany(data);
}
异步功能只是底层的承诺,但它们使事情看起来更加同步