关于承诺的问题

时间:2018-06-15 06:25:10

标签: javascript promise

我刚刚阅读了关于promise的{​​{3}}。我真的很困惑。

为什么

const bookPromise = bookModel.fetchAll();
const authorPromise = authorModel.fetch(authorId);
const book = await bookPromise;
const author = await authorPromise;

更好
const books = await bookModel.fetchAll();
const author = await authorModel.fetch(authorId);

作者解释说它是promise serial execution。但我只是看不出差异。你能解释一下吗? THX。

1 个答案:

答案 0 :(得分:3)

在第一个片段中,声明了两个Promise,并且两者的异步代码立即开始运行 - 两个网络请求(或任何操作)立即被发送出去。在第二个代码段中,author承诺在books承诺解决之前启动 - 如果延迟很高,例如,可能会出现问题。最好一次发出两个请求,而不是在启动另一个请求之前完成一个请求。

但是,使用Promise.all可能会更清楚:

const [book, author] = await Promise.all([
  bookModel.fetchAll(),
  authorModel.fetch(authorId)
]);