了解异步javascript

时间:2017-05-23 11:30:01

标签: javascript asynchronous async-await redux-saga

以下代码之间有什么区别:

代码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);
}

1 个答案:

答案 0 :(得分:4)

您的两个功能之间的差异是await vs return。丢失的await并不重要,因为从async function返回承诺将始终使用承诺结果similar to return await解决。所以唯一的区别是第一个解决方案中隐式返回的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;
}