繁体   English   中英

为什么函数 getSafestCountriesNames() 在我调用它时返回 promise{pending} 而当我使用 async/await 时它返回 undefined?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM