Javascript 异步等待似乎对我的函数没有影响
我正在尝试将新数据推送到我的posts数组中,并通过DOM操作将其显示在客户机上。前两个元素按预期显示,但第三个元素在我使用async/await关键字时未显示Javascript 异步等待似乎对我的函数没有影响,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,我正在尝试将新数据推送到我的posts数组中,并通过DOM操作将其显示在客户机上。前两个元素按预期显示,但第三个元素在我使用async/await关键字时未显示 const posts = [ { title: 'Post One', body: 'This is post one' }, { title: 'Post Two', body: 'This is post two' } ]; const getPosts = () => {
const posts = [
{
title: 'Post One',
body: 'This is post one'
},
{
title: 'Post Two',
body: 'This is post two'
}
];
const getPosts = () => {
setTimeout(() => {
let output = "";
posts.forEach((post, index) => {
output +=
`<ul>
<li>${post.title}</li>
</ul>`
})
document.getElementById('heading').innerHTML = output;
}, 1000);
}
const createPosts = (newPost) => {
setTimeout(() => {
posts.push(newPost);
}, 2000)
}
const newPost = async () => {
try{
await createPosts({title: 'Post Three', body: 'This is post three'});
getPosts();
}
catch{err => console.log(err)}
}
newPost();
const posts=[
{
标题:"第一篇文章",,
正文:“这是第一篇文章”
},
{
标题:"第二帖",,
正文:“这是第二帖”
}
];
const getPosts=()=>{
设置超时(()=>{
让输出=”;
posts.forEach((post,index)=>{
输出+=
`
- ${post.title}
`
})
document.getElementById('heading')。innerHTML=输出;
}, 1000);
}
const createPosts=(newPost)=>{
设置超时(()=>{
posts.push(newPost);
}, 2000)
}
const newPost=async()=>{
试一试{
等待createPosts({title:'Post Three',body:'This is Post Three'});
getPosts();
}
catch{err=>console.log(err)}
}
newPost();
createPosts()
需要返回超时后解决的承诺,以便等待
const createPosts = newPost =>
new Promise(resolve => setTimeout(() => {
posts.push(newPost);
resolve();
}), 2000));
createPosts()
没有返回承诺,您不能等待它。为什么createPosts()
使用setTimeout()
?在3秒后推送数组中的数据,然后启动DOM操作。因此它需要返回一个承诺,该承诺在timeout函数中得到解决。请删除createPosts()中的setTimeout,并使post变量不恒定,谢谢Barmar。事实上,createPosts必须兑现工作承诺。我发现了问题。非常感谢你。