我有一个异步函数返回一个值
async getUsername(env:string,skuName: string,token:string): Promise<any> {
let value = await this.getDeviceName(env,skuName,token);
return value;
};
在另一个函数中,我正在调用此“获取用户名”函数
let productN;
const prod = this.getUsername(env,skuName,token).then((resp) => {
productN= resp;
this.wait(300);
});
变量productN正在工作,因为我能够在日志中看到响应,但是当我尝试在此块之外使用productN时,我遇到了未定义的情况。
promotion = {
name: productN,
startDate: start,
endDate: end
};
我正在尝试将名称设置为productN,但我无法使其正常工作。
有人可以告诉我我做错了吗?谢谢
答案 0 :(得分:2)
收到回复后,您可以分配给"persistent_menu": [{
"locale": "default",
"composer_input_disabled": false,
"call_to_actions": [{
"type": "postback",
"title": "Quiz me!",
"payload": "MENU_QUIZ_ME"
},
{
"type": "postback",
"title": "Help",
"payload": "MENU_HELP"
}
]
}]
-
promotion
由于您的const prod = this.getUsername(env,skuName,token).then((resp) => {
productN = resp;
promotion.name = resp
this.wait(300);
});
是异步的,因此可以使用getUsername
等待响应,然后将其分配给await
对象。
promotion
---编辑---
(async() => {
const resp = await this.getUsername(env,skuName,token);
promotion = {
name: resp,
startDate: start,
endDate: end
}
})();
答案 1 :(得分:0)
尝试
<table:customData>
<core:CustomData key="p13nData" value='\{"columnKey": "PROJECT_DEFINITION" , "leadingProperty":"PROJECT_DEFINITION", "type":"string" \}'/>
</table:customData>
答案 2 :(得分:0)
您可以尝试这样做吗?在getDeviceName
中返回您的getUsername
函数;
getUsername(env:string, skuName: string, token:string): Promise<any> {
return this.getDeviceName(env, skuName, token);
};
const productN = await this.getUsername(env, skuName, token);
console.log(productN);
我不知道您为什么使用getUsername
。因为您可以直接从productN
获得getDeviceName
中的值。
喜欢
const productN = await this.getDeviceName(env, skuName, token);
如果您想在getUsername
内做其他事情。您可以使其兑现承诺。
getUsername(env:string, skuName: string, token:string): Promise<any> {
return New Promise(async (resolve,reject)=>{
try {
let value = await this.getDeviceName(env,skuName,token);
...
//all other things you want to do here
...
resolve(value);
} catch (error) {
reject(error)
}
}
};
const productN = await this.getUsername(env, skuName, token);
console.log(productN);
nb:我使用try catch
块进行错误处理,如果您不愿意,请忽略它。