了解异步 javascript

Understanding asynchronous javascript

下面这段代码有什么区别:

代码 1:

export default async function syncData() {
  await Promise.all([syncData1(), syncData2()]);
}

// called in sagas.js
function* x() {
  const res = yield call(syncData);
}

代码 2:

export default function syncData() {
  return Promise.all([syncData1(), syncData2()]);
}
// called in sagas.js
function* x() {
  const res = yield call(syncData);
}

你的两个函数之间的区别是 awaitreturn。缺少的 await 并不重要,因为从 async function 返回承诺将始终以承诺结果 解决。所以唯一的区别是第一个解决方案中隐式返回的undefined

明确写出:

export default async function syncData() {
  const res = await Promise.all([syncData1(), syncData2()]);
  return undefined;
}

export default function syncData() {
  const res = await Promise.all([syncData1(), syncData2()]);
  return res;
}