我刚刚阅读了关于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。
答案 0 :(得分:3)
在第一个片段中,声明了两个Promise
,并且两者的异步代码立即开始运行 - 两个网络请求(或任何操作)立即被发送出去。在第二个代码段中,author
承诺在books
承诺解决之前启动 - 如果延迟很高,例如,可能会出现问题。最好一次发出两个请求,而不是在启动另一个请求之前完成一个请求。
但是,使用Promise.all
可能会更清楚:
const [book, author] = await Promise.all([
bookModel.fetchAll(),
authorModel.fetch(authorId)
]);