javascript - promise 未决,已履行不返回

标签 javascript asynchronous async-await es6-promise

试图显示来自 json 的数据。
当我在控制台上运行我的函数时,它显示:
Promise {} 和 [[PromiseState]]:“已完成”
但实际上并没有返回任何东西。

getJobs = async () => {
try{
    response = await fetch("./data.json");
    const data = await response.json();
    return data;
} catch(error){
    console.log('Error getting data', error)
    }   
} 


renderJobs = async () => {
        const jobs = await getJobs();
        const view = `
            <div class='card-company'>
                ${jobs.map(companyName => `
                    <p>${companyName.company}</p>
                `).join('')}
            </div>
        `
        return view
}
我在属性 [[PromiseResult]] 中有我需要的所有 p 标签但文档中没有显示任何内容。
我还没有找到类似的东西,如果这个片段有什么需要改进的,我很感激反馈。
谢谢你。

最佳答案

因为这些是 async功能,需要使用await得到它们的最终返回值。
要记录 HTML 字符串,您可以使用 console.log(await renderJobs()); ,以及在哪里运行 renderJobs()在您的代码中,您需要使用 await也可以获取 HTML 字符串。
使用 console.log(renderJobs());将返回您描述的 promise 待处理消息,因为 async函数返回一个 promise ,而不是 promise 的结果。使用 await返回使用它的 Promise 的已实现值。

关于javascript - promise 未决,已履行不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65067234/

相关文章:

javascript - 按下后退按钮时,Ajax "POST"在 URL 中显示表单条目

android - 在异步任务中显示进度对话框时出现错误异常

javascript - 使用 setTimeout 运行大型任务而不阻塞输入,并使用 Promise 找出任务何时完成

javascript - 如何处理 fetch() 响应并仍然异步工作

javascript - Node.js 代码被跳过 (for)

c#-4.0 - 在 MVC4 中尝试使用 Async、Task 和 Await 异步的 ValidationAttribute

javascript - 响应不可分配给类型 Promise<any> 属性最终丢失?

c# - 如何使异步事件连续运行?

javascript - DOM 中有很多空行

javascript - 与 Regex JS 模式混淆