努力用异步等待包装诺言

时间:2018-02-07 11:04:19

标签: javascript reactjs

我有意想不到的标识符,但不确定是什么错误。我使用fetch已经是一个承诺了。

async getUsers = () => {
  const resp = await fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(response => response.json())

  return resp
}

getUsers().then(users => console.log(users))

5 个答案:

答案 0 :(得分:3)

请注意async关键字的位置:

async getUsers = () => {

可是:

getUsers = async () => {

执行命令

getUsers = async () => {
  const resp = await fetch('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => response.json())
  return resp;
};

getUsers().then(users => console.log(users))

根据评论:

  

我应该在then()中链接getUsers()吗? async / await我想要消除then()我是对吗?

是的,您可以await任意Promise。或者有时使用.then(),有时使用await(就像上面的代码一样)。但您也可以 使用async / await

以下示例不使用.then()

getUsers = async () => {
  const resp = await fetch('https://jsonplaceholder.typicode.com/posts/1')
  return resp.json();
};

(async () => {
  // notice to use the await keyword, the code must be wrapped in an async function
  const users = await getUsers();
  console.log(users);
})();

答案 1 :(得分:1)

除了@acdcjunior指出的异步词中的拼写错误之外,你还要将async / await与通常的承诺处理(.then())混合在一起,这是没有错的,但却有点失败。仅使用async / await看起来像:



const getUsers = async () => {
  const resp = await fetch('https://jsonplaceholder.typicode.com/posts/1');
  return resp.json(); 
}

async function fetchUsers() {
    try {
        const users = await getUsers();
        console.log(users);
    } catch(err) {
        console.log(err);
    }
}

fetchUsers();




答案 2 :(得分:0)

你的语法错误:

const getusers = async () => {
  ...
}

const是可选的

答案 3 :(得分:0)

你声明你的功能的语法是错误的,这里有一些解释。

如果getUsers是反应组件类的方法,则语法应为:

  getUsers = async () => {
    const resp = await fetch(
      'https://jsonplaceholder.typicode.com/posts/1'
    ).then(response => response.json());
    return resp;
  };

或:

  async getUsers() {
    const resp = await fetch(
      'https://jsonplaceholder.typicode.com/posts/1'
    ).then(response => response.json());
    return resp;
  };

如果它位于react组件类之外或无状态箭头功能组件中,则可以使用以下语法:

  const getUsers = async () => {
    const resp = await fetch(
      'https://jsonplaceholder.typicode.com/posts/1'
    ).then(response => response.json());
    return resp;
  };

答案 4 :(得分:0)

const getUsers = async () => {
  try {
      const resp = await fetch('https://jsonplaceholder.typicode.com/posts/1');
   
      return resp.json();
  } catch(e) {
     console.error(e)
  }  
}

(async () => {
   const users = await getUsers();
   console.log(users)
})()

使用此功能,然后运行