我有以下异步函数
export default async function getUserNames(id: string[]): Promise<string[]> {
let userNames: string[] = [];
// We do some stuff here like calling a service, etc...
return userNames;
}
在不同的 typescript 文件中,我正在导入 getuserNames 函数并尝试像这样调用它:
const promiseResult = getUserNames(idList)
.then(result => {
return result;
})
.catch(error => {
return undefined;
});
if (promiseResult) {
// Do something else here.
}
但是,promiseResult 类型是 Promise 而不是我所期望的 string[]。我如何调用 getuserNames 函数并在完成后将实际的字符串 [] 返回给 promiseResult 变量?
编辑 可以接受做这样的事情吗?
let varB: string[];
const promiseResult = getUserNames(idList)
.then(result => {
varB = result;
})
.catch(error => {
varB = undefined;
});
if (varB) {
// Do something else here.
}
最后,请注意调用 getUserNames 的函数未定义为异步,我无法更改它。
最佳答案
如果您想访问 promise 解析的值,您唯一的选择是
1) 使用 promise 的 .then 回调
getUserNames(idList)
.then(result => {
// Do something else here.
})
2) 将代码放在异步函数中并使用 await 关键字:
async function someFunction () {
const result = await getUserNames(idList);
// Do something else here.
}
请注意,由于所有异步函数都返回 promise ,因此在此示例中,someFunction 将返回一个 promise 。
关于javascript - 解析一个使用 Promise 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55382802/