什么时候可以在javascript中进行异步/等待?

时间:2019-01-26 02:03:13

标签: javascript

我知道以下代码将输出malloc();。我的问题是,这有什么用?在React,Node等中构建现实应用程序时,什么时候异步/等待会有用?

{{ vars[item ~ '_port'] }}

1 个答案:

答案 0 :(得分:2)

网络,文件和常见承诺

我相信您会遇到的最常见的问题将使您希望将当前功能切换到async模式通常与以下目的有关:网络请求,文件,以及承诺的频繁使用和/或嵌套

网络请求

当我写网络请求时,我总是使用async/await等待组合。对我来说,这使我的代码更具线性和可读性。完成后,我也不必担心会从fetch(或axios)返回承诺。

async function getPins(user, filterValue) {
  const pins = await axios.get(...);
  if (filterValue) {
    return pins.filter(pin => pin.title.includes(filterValue));
  }
  return pins;
}

文件

async function handleFile(data, isEncrypted, isGzipped) {
  if (isEncrypted) {
    data = await decrypt(data, secret);
  }
  if (isGzipped) {
    data = await ungzip(data);
  }
  return data;
}

常见承诺

async function init() {
  const activeBoard = await getActiveBoard();
  const boardMembers = await getBoardMembersFrom(activeBoard);
  const allTasks = [];

  for await (const tasks of boardMembers.map(getTasks)) {
    allTasks.push(task);
    this.setState({ tasks: [...allTasks] });
  }
}

注意:您可以将async/await与Promises一起使用。无需将自己局限于一个或另一个。

const test = async props => {
  const data = await fetch('...').then(res => res.json());
  console.log(data) /* do what you want with the data now */
}