[英]Why does the function getSafestCountriesNames() return promise{pending} when i call it and when i use async/await it returns undefined?
这是函数:
export const getSafestCountriesNames = async() => {
try{
const names = await getCountriesData();
names.forEach((country) => {
const {score} = country.advisory;
if(score == 0){
const liEl = createDOMElement('li', {className: 'name'});
liEl.innerHTML = `${country.name}`;
return liEl;
}
});
}
// …
}
当我在这里调用它时,我得到了undefined
:
async function func(){
const names = await getSafestCountriesNames();
console.log(names);
}
func();
它返回Promise{pending}
因为当一个函数有async
关键字时,它必须返回一个 Promise。 见这里。
尽管如此,您的代码中存在更深层次的问题。 您的 return 语句位于forEach
的回调中。 这是回调的返回语句,而不是getSafestCountriesNames
。
由于您需要返回一个 Promise (因为您正在使用await
),您可以将您的逻辑包装在类似以下内容中:
return new Promise((resolve, reject) => {
// your logic here, resolving or rejecting instead of just returning
})
或者保持简单: return Promise.resolve("something")
当您使用await
调用该函数时,它会解析undefined
因为您没有解析 Promise 中的任何内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.