Javascript 如何使async Wait为附加的代码工作?

Javascript 如何使async Wait为附加的代码工作?,javascript,async-await,Javascript,Async Await,有谁能告诉我如何使async Wait为以下代码工作: const posts = [ { title: "Post One", body: "This is post one" }, { title: "Post Two", body: "This is post two" }, ]; function getPosts() { setTimeout(() => { posts.forE

有谁能告诉我如何使async Wait为以下代码工作:

const posts = [
  { title: "Post One", body: "This is post one" },
  { title: "Post Two", body: "This is post two" },
];

function getPosts() {
  setTimeout(() => {
    posts.forEach((post) => {
      console.log(post.title, post.body);
    });
  }, 1000);
}

function createPost(post) {
  setTimeout(() => {
    posts.push(post);
  }, 2000);
}

async function init() {
  await createPost({ title: "Post Three", body: "This is post three" });
  getPosts();
}

init();

目前我看不到第三篇文章,因为createPost没有等待getPosts。

您的
createPost
函数应该返回promise,然后在将新元素推送到posts数组后,您可以在超时内解析该promise

const posts=[{
标题:“发布一条”,
正文:“这是第一篇文章”
},
{
标题:“第二篇”,
正文:“这是第二站”
},
];
函数getPosts(){
设置超时(()=>{
posts.forEach((post)=>{
控制台日志(post.title、post.body);
});
}, 1000);
}
函数createPost(post){
返回新承诺(解决=>{
设置超时(()=>{
posts.push(post);
决心(正确);
}, 2000);
})
}
异步函数init(){
等待createPost({
标题:"三后",,
正文:“这是第三站”
});
getPosts();
}

init()
wait
不是等待超时,而是等待承诺解决。您没有创建承诺。
createPost()
应返回承诺。请参见上的基本示例,您必须从
createPost
getPosts
创建并返回承诺
Wait
不能按逻辑等待一切,除非它被告知要等待什么…非常感谢:)@Agnes Liszka不客气。